1 adc指令:带进位加法指令
2 指令格式:adc 操作对象1,操作对象2
3 功能:操作对象1 = 操作对象1 + 操作对象2 + CF
4 例如:adx ax,bx实现的功能是:(ax) = (ax) + (bx) + CF
5
6 sbb指令:带借位减法指令
7 指令格式:sbb 操作对象1,操作对象2
8 功能:操作对象1 = 操作对象1 - 操作对象2 - CF
9 例如:sbb ax,bx实现的功能是:(ax) = (ax) - (bx) - CF
10
11 cmp指令:比较指令,功能类似减法指令,不过不保存结果,临时结果存在CPU暂存器处
12 指令格式:cmp 操作对象1,操作对象2
13 功能:计算操作对象1-操作对象2的结果,但不保存结果,影响标志寄存器flag
14 例如:cmp ax,ax实现的功能就是:ZF=1 PF=1 SF=0 CF=0 OF=0
15
16 条件转移指令:经常跟在cmp后,进行转移,也可以跟在其他指令后,本质是对寄存器的相关检测来进行转移
17 常见条件转移指令如下:
18 指令 含义 相关标志位
19 je 等于则转移 ZF=1
20 jne 不等于则转移 ZF=0
21 jb 低于则转移 CF=1
22 jnb 不低于则转移 CF=0
23 ja 高于则转移 CF=0且ZF=0
24 jna 不高于则转移 CF=1或ZF=1
25
26 movsb指令:串传送指令,通常与rep搭配使用,形如rep movsb
27 指令格式:rep movsb 等价于 s:movsb
28 loop s
29 功能:将ds:[si]处字节单元转送给es:[di]处,然后根据DF标志位(为0则加1,为1则减1)si与di同时变化
30 例如:mov byte ptr es:[di],ds:[si] //当然8086并不支持这样写
31 若DF=0
32 inc si
33 inc di
34 则
35 dec si
36 dec di
37
38 movsw指令:同movsb,唯一不同的是movsw传送的是字单元
39
40 cld指令:用来将标志位DF置为0
41
42 std指令:用来将标志位DF置为1