Flag-register

📄 返回目录页

标志寄存器,其中有许多标志位,供cpu修改与设置,记录cpu执行指令时的状态
Pasted image 20241125203044.png|541
其中灰色的部分为保留位

对于16位模式下的标志寄存器,前16位和EFLAG寄存器相同
对于64位模式下的标志寄存器,低32位均和EFLAG寄存器相同,高32位均为保留位

标志位

CF(Carry Flag)

位于寄存器的第0位,在进行无符号数运算时,它记录了运算结果的最高有效位向更高位的进位值,或从更高位的借位值
比如两个十六进制数0xFFFF和0xFFFF相加后,保存在十六进制ax寄存器里,ax无法保存这个进位值,为此,这个进位值会保存子CF位中。ax里的值位0xFFFF,CF位则为1

PF(Parity Flag)

位于寄存器的第2位,用途是记录指令执行后,其运算结果的所有位中1的个数是否为偶数

AF(Auxiliary Flag)

位于寄存器的第4位,为辅助进位标志位,如果第3位向第4位发生了进位,那么AF标志位为1

mov al, 0xF
add al, 1

此时AL寄存器为0x10,AF标志位为1。

ZF(Zero Flag)

位于寄存器的第6位,记录相关指令执行后是否为0,是为1,否为0

SF(Sign Flag)

位于寄存器的第7位,记录相关指令执行后是否为负数,是为1,否为0
SF标志位是CPU对有符号数运算结果的一种记录,用于记录数据的正负,即最高位是否为1

IF(Interrupt Enable Flag)

位于寄存器第8位,表示是否响应中断。

DF(Direction Flag)

位于寄存器第9位,为方向标志位,默认值为0

OF(Overflow Flag)

位于寄存器的第9位,为溢出标志位。如果计算后发生了溢出,那么OF标志位会设置为1。