首页 > 代码库 > 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,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标志寄存器加深理解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。