目录
暂无目录
FLAG 寄存器
存储程序状态字(PSW,program status word),存储相关指令的执行结果,为相关指令提供行为依据,用来控制 CPU 的相关工作方式。flag 寄存器是按位起作用的,每一位都有专门的含义记录特定信息。
在 32 位 CPU 中称为为EFLAGS 寄存器,64 为 CPU 中称为RFLAGS 寄存器,它们扩展出的高位地址都不使用。现代计算机中一般也叫做PSW 寄存器。下面以 8086 为基础处理器分析该寄存器的功能
ZF(Zero Flag)
第 6 位标志位,零标志位。计算指令执行后,若结果为 0,则 zf=1,否则 zf=0
PF(Parity Flag)
第 2 位标志位,奇偶标志位。指令执行后,若所有 bit 位中 1 的个数为偶数,则 pf=1,否则 pf=0
; 示例1
mov al, 1
add al, al
; al=00000010 1的个数为1,所以pf=0
; 示例2
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