PSW寄存器分析


目录

暂无目录

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

; 示例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