目录
一、abc指令
1.abc是带进位加法指令,它利用了CF位上记录的进位值。
2.指令格式:abc 操作对象1,操作对象2
3.功能:操作对象1=操作对象1+操作对象2+CF。
4.例如:指令 abc ax,bx 实现的功能是:(ax)=(ax)+(bx)+CF
二、sbb指令
1.sbb是带错位减法指令,它利用了CF位上记录的错位值。
2.指令格式:sbb 操作对象1,操作对象2。
3.功能:操作对象1=操作对象1-操作对象2-CF。
4.例如:sbb ax,bx实现的功能是:(ax)=(ax)-(bx)-CF。
三、cmp指令
1.cmp是比较指令,cmp的功能相当于减法指令,只是不保存结果。cmp指令执行后,将对标志寄存器产生影响。
2.cmp指令格式:cmp 操作对象1,操作对象2。
3.功能:计算操作对象1-操作对象2但不保存结果,仅仅根据计算结果对标志寄存器进行设置。
4.例如:指令cmp ax,bx,做(ax)-(ax)的运算结果为0,但并不在ax中保存,仅影响flag相关各位。指令执行后:zf=1,pf=1,sf=0,cf=0,of=0。
四、DF标志和串传送指令
1.falg的第10位是DF,方向标志位。在串处理指令中,控制每次操作后si,di的递减。
df=0 每次操作后si,di递减
df=1 每次操作后si,di递减
2.我们来看下面这条指串传输指令。
格式:movsb
功能:执行movsb指令相当于进行下面几步操作:
(1)((es)*16+(di))=((ds)*16+si)
(2)如果df=0 则:
(si)=(si)+1
(di)=(di)+1
五、pushf和popf
1.pushf的功能是将标志寄存器的值压栈,而popf是从栈中弹出数据,送入标志寄存器当中。
2.pushf和popf,为直接访问标志寄存器提供了一种方法。
六、标志寄存器在debug中的表示
在Debug中,标志寄存器是按照有意义的各个标志位单独表示的。