在Debug中,标志寄存器是按照有意义的各个标志位单独表示的。在Debug中,我们可以看到下面的信息。
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=*** ES=*** sS=*** CS=*** IP=0100 NV UP EI PL NZ NA PO NC | | | | | | OF DF SF ZF PF CF
下面列出Debug对我们已知的标志位的表示。
标志 值为1的标一记 值为0的标记 of OV NV sf NG PL zf ZR NZ pf PE PO cf CY NC df DN UP
常见运算标志位的解释
OF(overflow flag)溢出标志位 ,针对有符号运算使用,当运算有溢出 时 of = 1
sf (sign flag ) 符号标志位 ,sf的值为有符号数的符号位的值
zf(zero flag )零标志位,当结果为零时 zf=1
pf(pairty flag) 偶标志位 ,当结果中1的个数为偶数个是pf=1
cf(carry flag) 进位标志位,无符号运算时如果产生进位cf = 1
af(auxiliary flag )辅助进位标志位,当低半字节运算产生进位时af=1
常见的指令对标志寄存器中标志位的影响
add、adc、sub、sbb、imul、idiv、neg对六个运算标志位都可能产生影响
inc、dec不会对cf产生影响 对其他标志位可能会有影响,
mul、div只会对cf/of产生影响。
and、or、xor指令都能清cf/of为0 ,
not对标志位没影响,
TEST指令影响 sf/pf/zf。