标志寄存器是在CPU内部的特殊寄存器,具有三种作用:
1.存储运算结果
2.为一些指令提供执行依据
3.控制CPU的相关工作方式
8086的flag寄存器结构如下
标志位在debug下的显示如下
常见运算标志位的解释
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
其中表格中的前六个标志位为运算标志位 ,他们用来表示在运算过程中执行的结果,最后三个是状态控制标志位 ,用来控制cpu的工作方式。
常见的指令对标志寄存器中标志位 的影响
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。