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
  • 处理器内部使用,用于十进制算术运算调整指令中,用户一般不必关心

Last modification:December 17, 2018
如果觉得我的文章对你有用,请随意赞赏