如何读取x86处理器中的标志寄存器

时间:2013-03-13 15:17:36

标签: assembly x86

是否有任何汇编指令让我们直接读取或写入Intel 80386 16位Flags寄存器中的溢出标志?如果没有,我们应该使用什么伪代码?

3 个答案:

答案 0 :(得分:8)

只读溢出标志:

SETO AL
; AL now contains 1 if the overflow flag was set, and 0 if it wasn't


要反转溢出标志:

PUSHF
POP    AX
XOR    AX,800h  ; The overflow flag is in bit 11
PUSH   AX
POPF

答案 1 :(得分:1)

将标志读入AX

pushf
pop ax

要写入标志:如果需要设置/清除特定位,有一些命令,如stc/clc(用于进位标志),std/cld(用于方向)等等;但不会以这种方式暴露比特。要编写整个标志寄存器,请使用

push ax
popf

答案 2 :(得分:0)

使用

Pushf
// modify or read ax register
Popf