我想写一个简单的代码(或算法)来设置/清除溢出标志。你能帮我吗?
答案 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