如何在x86汇编中设置溢出标志?

时间:2016-04-27 12:49:52

标签: assembly x86

我想写一个简单的代码(或算法)来设置/清除溢出标志。你能帮我吗?

2 个答案:

答案 0 :(得分:2)

许多说明都将OF清除为副作用,例如test。因此,您可以编写类似test eax, eax的内容,并清除OF,尽管它会影响其他标志。你没有说明是否允许这样做。

要设置OF,您可以执行一些设置它的操作。例如,将最大正数加1:mov al, 0x7f; add al, 1

或者,您可以使用pushf复制堆栈上的标记,根据自己的喜好对其进行修改,然后使用popf将其恢复。

答案 1 :(得分:1)

设置Overflow flag(OF) - Bit 11 of EFLAGS使用(使用MASM语法)

pushfd                   ; mov EFLAGS to stack
bts dword ptr [esp], 11  ; set OF flag
popfd                    ; write it back to status register

和分别使用以下命令重置OF标志:

pushfd                   ; mov EFLAGS to stack
btr dword ptr [esp], 11  ; reset OF flag
popfd                    ; write it back to status register