4

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

4

3 回答 3

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
于 2013-03-13T15:38:02.440 回答
1

要将标志读入AX

pushf
pop ax

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

push ax
popf
于 2013-03-13T15:56:38.383 回答
0

利用

Pushf
// modify or read ax register
Popf
于 2013-03-13T15:19:49.003 回答