标志寄存器 flag
flag寄存器不同于其他寄存器,它不存储数据,按位作用
起作用的位:0 2 4 6 7 8 9 10 11
名称 | 功能 |
---|---|
CF | 记录了运算结果的最高有效位向更高位的进位值或从更高位的借位值 |
PF | 判断计算结果所有bit位中1个数是否为偶数 |
AF | |
ZF | 判断计算后结果是否为0 |
SF | 判断计算结果是否为负 |
TF | |
IF | |
DF | 方向标志位,在串处理指令中,控制每次操作后si(一般指向原始偏移地址)、di(一般指向目标偏移地址)的增减 |
OF | CF是对无符号数运算有意义的标志位,而OF是对有符号数运算有意义的标志位 |
adc指令
adc是带有进位加法指令,利用了CF位上记录的进位值。格式:adc操作对象1,操作对象2
功能:操作对象1=操作对象1+操作对象2+CF
sbb指令
sbb是带借位减法指令,利用了CF位上记录的借位值
格式:sbb 操作对象1,操作对象2
功能:操作对象1=操作对象1-操作对象2-CF
利用sbb指令我们可以对任意大的数据进行减法运算。sbb和adc是基于同样的思想设计的两条指令,在应用思路上sbb和adc类似。
cmp指令
cmp是比较指令,功能上相当于减法指令,只是不保存结果
格式:cmp 操作对象1,操作对象2.
功能:计算操作对象1-操作对象2但不保存结果,仅仅是根据计算结果对标志寄存器进行设置。
pushf和popf
pushf,popf 和push ,pop 的功能相似,其载体变为标志寄存器
pushf和popf为直接访问标志寄存器提供了一种方法。