EFLAGS标志寄存器加深理解
Posted 先完成一个小目标
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,0FFE6FF00 | |
ADD EAX,208704 | |||
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标志寄存器加深理解的主要内容,如果未能解决你的问题,请参考以下文章