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

use*_*619 4 x86 assembly

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

Mic*_*ael 8

要只读溢出标志:

SETO AL
; AL now contains 1 if the overflow flag was set, and 0 if it wasn't
Run Code Online (Sandbox Code Playgroud)


要反转溢出标志:

PUSHF
POP    AX
XOR    AX,800h  ; The overflow flag is in bit 11
PUSH   AX
POPF
Run Code Online (Sandbox Code Playgroud)

  • 考虑到如何将相同的代码设置为16位应该是显而易见的,这是一个相当小的细节.无论如何编辑了答案. (3认同)
  • 显然情况并非如此,因为问题标题只提到阅读旗帜.在撰写我的初始答案时,我只是忽略了一个细节,我真的不认为这个例子"没用". (3认同)