# FLAG 寄存器

存储程序状态字(PSW,program status word),存储相关指令的执行结果,为相关指令提供行为依据,用来控制 CPU 的相关工作方式。flag 寄存器是按位起作用的每一位都有专门的含义记录特定信息

在 32 位 CPU 中称为为 EFLAGS 寄存器,64 为 CPU 中称为 RFLAGS 寄存器,它们扩展出的高位地址都不使用。现代计算机中一般也叫做 PSW 寄存器。下面以 8086 为基础处理器分析该寄存器的功能

flag寄存器

# ZF(Zero Flag)

第 6 位标志位,零标志位。计算指令执行后,若结果为 0,则 zf=1,否则 zf=0

# PF(Parity Flag)

第 2 位标志位,奇偶标志位。指令执行后,若所有 bit 位中 1 的个数为偶数,则 pf=1,否则 pf=0

mov al 1
add al,al
al=00000010   //1的个数为1,所以pf=0 
若改为
add al,10H
al=00000011  //1的个数为2,所以pf=1 

# SF(Symbol Flag)

第 7 位标志位,符号标志位。指令执行后,若结果为负,则 sf=1,否则 sf=0

# CF(Carry Flag)

第 0 位标志位,进位标志位。无符号运算中指令执行后,若产生进位,则 cf=1,否则 cf=0,同时也可以用作表示借位。若其值被 add 设置则表示进位,被 sub 设置则表示借位

# OF(Overflow Flag)

第 11 位标志位,溢出标志位。有符号运算时,若产生溢出,则 of=1,否则 of=0

# AF(Auxiliary Flag)

第 4 位标志位,辅助进位标志位。若操作中发生了进位或借位,则 af=1,否则 af=0
mov al,0Fh
add al,1
计算过程
00001111
00000001
——————
00010000 位 3 中发生了进位,af=1

# IF(Interrupt-Enable Flag)

第 9 位标志位,中断允许标志位。决定 CPU 是否能够响应外部可屏蔽中断请求,若响应则 if=1,否则 if=0

# DF(Direction Flag)

第 10 位标志位,方向标志位。控制 SI 和 DI 自增还是自减。若自减,则 df=1,否则 df=0

# TF(Trap Flag)

第 8 位标志位,追踪标志位。若 CPU 进入单步调试,则 tf=1,否则 tf=0

更新于 阅读次数