80X86汇编要点总结

1.指令和数据都是以二进制存储。cpu根据cs:ip确认指令。
2.存储单元从0开始编号,因为地址是二进制信息。
3.8086的寻址模式:基础地址+偏移地址=物理地址。
4.pop ax 字型数据用两个单元存放,高地址单元存放高八位,低地址单元存放低八位。
5.指令push,pop 寄存器/段寄存器/内存单元
6.80X86汇编要点总结_第1张图片
7.loop指令:cx =cx - 1;cx不为0转至标号处执行。 和[bx]联合使用,对连续内存空间操作。
8.位操作指令and和or and al,11111111;大写字母的ascii码第5位为0。
9.80X86汇编要点总结_第2张图片
10.80X86汇编要点总结_第3张图片
80X86汇编要点总结_第4张图片
11.div指令
除数8位,被除数则16位,默认放在ax中,除数位16位,则被除数为32位,在dx(高16位)和ax中存放。
结果:如果除数为8位,al存商,ah存余数;如果除数为16位,则ax存商,dx中存余数。
12.mul指令
80X86汇编要点总结_第5张图片
13.dup
80X86汇编要点总结_第6张图片
14.转移指令(修改cs/ip)
offset取得偏移地址
jmp short s,段内短转移,向前最多越过128个字节,向后最多127个。
80X86汇编要点总结_第7张图片
cpu执行jmp指令的时候并不需要转移的目的地址
80X86汇编要点总结_第8张图片
jmp far ptr s
80X86汇编要点总结_第9张图片
jmp reg,(ip) = (reg)
jmp word ptr,jmp dword ptr,
jcxz 标号,短转移 cx =0执行
loop 短转移
call和ret
ret/retf 利用栈中的数据修改cs,ip
call标号(当前ip入栈,转移到标号处执行)
call far ptr (cs入栈,ip入栈,转移)
用法和jmp类似
call和ret联合:
80X86汇编要点总结_第10张图片
15.标志寄存器
zf 运算指令的执行结果为0置1.
pf 运算指令的执行结果所有bit位中1的个数为偶数则置1.
sf 将数据当作有符号数运算的时候,可以通过它判断正负
cf 进行无符号数运算的时候,记录进位值或借位值 adc是带进位加法,执行时利用cf
of 有符号数运算时溢出 如,mov al,98 add al,99 会of =1.
16.cmp指令
80X86汇编要点总结_第11张图片
80X86汇编要点总结_第12张图片
17df标志和串传送
df=0 每次操作后si,di递增
df=1 每次操作后si,di递减
movsb 80X86汇编要点总结_第13张图片
movsw 80X86汇编要点总结_第14张图片
cld:df置0 正向
std:df置1 反向
80X86汇编要点总结_第15张图片
18. pushf 和 popf 将标志寄存器的值压栈。
19. 中断
中断向量表中一个表项占两个字,高地址字存放段地址。
中断过程:80X86汇编要点总结_第16张图片
TF =1 引发单步中断
int 指令
80X86汇编要点总结_第17张图片
20.shl和shr指令 最后一位入cf
21.端口 in out

1)编程,读取CMOS RAM的2号单元内容。
assume cs:code
code segment
start:  mov al,2        ; (al)=2 2号单元
        out 70h,al      ;将al送入端口70h,选中2号单元
        in al,71h       ;从端口71h处读出2号单元内容,送入al
       mov ax,4c00h
       int 21h
code ends
    end start
(2)编程,向CMOS RAM的2号单元写入0。
assume cs:code
code segment
start:  mov al, 2        ;(al)=2 2号单元 
        out 70h, al      ;将al送入端口70h,选中2号单元
      mov al, 0       ;(al)=0 写入端口的内容  
      out 71h, al     ;将(al)=0写入到71h端口的2号单元内。
       mov ax,4c00h
       int 21h
code ends
end start

22.外中断
80X86汇编要点总结_第18张图片
sti,设置IF=1 cli,设置IF=0.
pc机键盘的处理过程
80X86汇编要点总结_第19张图片
80X86汇编要点总结_第20张图片
23.直接地址表
table db 1,2,3
24. 使用BIOS进行键盘输入和磁盘读写
80X86汇编要点总结_第21张图片
80X86汇编要点总结_第22张图片
80X86汇编要点总结_第23张图片
80X86汇编要点总结_第24张图片
字符串的输入
1)调用int16h读取键盘输入
2)如果是字符,进入字符栈,显示字符栈中的所有字符
3)如果是退格键,从字符栈中弹出一个字符
4)如果是enter键,向字符栈中压入0,返回
磁盘读写 int13h
80X86汇编要点总结_第25张图片

你可能感兴趣的:(汇编与硬件)