FLAG
16 bit 标识寄存器
条件标志位:
SF ZF OF CF AF PF
CPU执行完一条指令后自动设置
反映算术、逻辑运算等指令执行完毕后,运算结果的特征
控制标志位:
DF IF TF
控制CPU的运行方式,工作状态。
标志位
控制标志位
IF
- 中断标志
- 防止多次调用
IF ==1
禁止中断 IF ==0
可以中断
进位标志位
CF
- 进位标志
- 用途:用于表示两个无符号数高低
- 特别:当执行
neg
时,只看二进制的最高位(符号位),只要改变了那么CF==1
CF==1
加法进位/减法借位 CF==0
无 加法进位/减法借位
举例:
3AH + 7CH=B6H,没有进位:CF = 0
AAH + 7CH=(1)26H,有进位:CF = 1
OF
- 使用该标志位判断运算结果是否溢出。(当将操作数作为有符号数时)
- 加法:若同符号数相加,结果的符号与之相反则OF=1,否则OF置0
减法:被减数与减数异号,而结果的符号与减数相同则OF=1,否则置0
发生了溢出,说明了运算结果不可信。 3AH + 7CH=B6H,产生溢出:OF = 1 AAH + 7CH=(1)26H,没有溢出:OF = 0
进位和溢出
- 进位针对的是无符号数运算,溢出针对的是有符号数运算。
- 当看成无符号数,则关注CF标志,看成有符号数,则关注OF标志。
ZF
- 若运算结果为0则
ZF=1
,否则ZF=0
- 用途:用于表示两个无符号数高低
举例:
3AH + 7CH=B6H,结果不是零:ZF = 0
84H + 7CH=(1)00H,结果是零:ZF = 1
SF
- 运算结果最高位为1,SF为1,否则为0
- 有符号数据用最高有效位表示数据的符号,最高有效位是符号标志的状态。
举例:
3AH + 7CH=B6H,最高位D7=1:SF = 1
84H + 7CH=(1)00H,最高位D7=0:SF = 0
PF
- 当运算结果(指低8位)中1的个数为偶数时,PF置1,否则置0。
作用:该标志位主要用于检测数据在传输过程中的错误。
举例:3AH + 7CH=B6H=10110110B 结果中有5个1,是奇数:PF = 0 ``
- 表示一个字节的低4位是否有进位和借位
- 运算时D3位(低半字节)有进位或借位时,
AF = 1
否则AF = 0
处理器内部使用,用于十进制算术运算调整指令中,用户一般不必关心