use*_*001 5 x86 assembly eflags
我想编写一个简单的代码(或算法)来设置/清除溢出标志。对于设置 OF,我知道我可以使用有符号值。但我怎么能清除呢?
有很多可能的解决方案。
例如,test al, al
将清除OF
标志而不影响寄存器内容。
或者,如果你不想影响其他标志,你可以直接修改寄存器*FLAGS
。例如,在 32 位中,这看起来像:
pushfd ; Push EFLAGS onto the stack
and dword [esp], ~0x800 ; Clear bit 11 (OF)
popfd ; Pop the modified result back into EFLAGS
Run Code Online (Sandbox Code Playgroud)
编辑:更改or al, al
为test al, al
根据Peter Cordes的建议。(效果相同但出于性能原因后者更好)