标志位
状态标志
CF (Carry Flag) 进位标志
PF (Parity Flag) 奇偶标志
AF (Auxiliary Carry Flag) 辅助进位标志
ZF (Zero Flag) 零标志位
SF (Sign Flag) 符号标志
OF (Overflow Flag) 溢出标志
控制标志
TF (Trap Flag) 追踪标志
IF (Interrupt-enable Flag) 中断允许标志
DF (Direction Flag) 方向标志
32位标志寄存器增加的标志位
IOPL (I/O Privilege Level) I/O特权标志
NT (Nested Task) 嵌套任务标志
RF (Restart Flag) 重启动标志
VM (Virtual 8086 Mode) 虚拟8086方式标志
修改标志位的指令
计算指令
加法
ADD
SUB
XADD
CF 最高位是否有进位
OF 若两个操作数符号相同,而结果符号与之相反
INC 不影响
减法
SUB
SBB
NEG
CMP
CMPXCHG
CMPXCHG8B
CMPXCHG8B只影响ZF。
CF说明无符号数相减的溢出,同时又确实是被减数最高有效位向高位的借位。
OF位则说明带符号数的溢出
无符号运算时,若减数>被减数,有借位CF=1,否则CF=0.
OF若两个数符号相反,而结果的符号与减数相同则OF=1.否则OF=0.
DEC 不影响
乘法
MUL
IMUL
MUL:如果乘积高一半为0,则CF和OF位均为0,否则CF和OF均为1.
IMUL:如果高一半是低一半符号的扩展,则CF位和OF位均为0,否则就均为1.
除法不影响
逻辑指令
AND
OR
XOR
TEST
CF、OF、置0,AF无定义,SF、ZF、PF位看情况而定。
CMP dst, src
无符号数比较
结果 | ZF | CF |
---|---|---|
dst < src | 0 | 1 |
dst > src | 0 | 0 |
dst = src | 1 | 0 |
有符号数比较
结果 | 标志位 |
---|---|
dst < src | SF ≠ OF |
dst > src | SF = OF |
dst = src | ZF = 1 |
CMP 隐含减法操作,从目的操作数中减去源操作数
当实际的减法发生时,CMP按结果修改溢出、符号、零、进位、辅助进位和奇偶标志