首页 > 代码库 > EFLAGS标志寄存器加深理解

EFLAGS标志寄存器加深理解

符号位表
这些符号位存在一个叫做PSW(Program Status Word,程序状态字)的16位(4字节)寄存器里面。
符号位 叙述 典型应用 汇编测试
OF 溢出标志,标明一个溢出的运算。真置1,假置0。 CPU 会根据有符号数来进行判断,如果有符号数溢出,OF置1
例如: 16位数
AX:0x858F
进行 SUB AX,0x7869 操作 后 OF就置1 ,CF位还是0,AX没有向第17位进行借位或进位。
MOV AX,858F/ SUB AX,7869
SF 负号标志,标明结果为负数。真置1,假置0。 int i = -100; MOV AL,86
if(i < 0) CMP AL,0
goto somewhere;  
ZF 零标志,标明结果为0。真置1,假置0。 见上cmp例子 MOV AL,0/CMP AL,0
CF 进位标志,标明结果进位了。真置1,假置0。 MOV EAX,1 MOV EAX,0FFE6FF00
MOV EBX,9 ADD EAX,208704
ADD EAX,EBX  
AF 辅助进位标志,记录运算时第3位(半个字节)产生的进位。 操作对象一半位置是否有进位或借位 MOV AX,78FE/ADD AX,3
PF 奇偶标志,结果操作数中1的个数为偶置1(我猜是二进制下)。 最后一个字节操作数中1的个数为偶置1  
DF 方向标志,在串处理指令中控制信息的方向(非运算) 0: 地址加   1:地址减 MOV ECX,3/REP STOS DWORD PTR ES:[EDI]
IF 中断标志(非运算) (null)  
TF 陷井标志(非运算) (null)  

EFLAGS标志寄存器加深理解