我想写一个简单的代码(或算法)来设置/清除溢出标志。为了设置OF,我知道我可以使用带符号的值。但是我怎么能清除这个?如何设置或清除x86程序集中的溢出标志?
1
A
回答
1
有很多可能的解决方案。
例如,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
编辑:改变or al, al
到test al, al
每Peter Cordes“的建议。 (效果相同,但后者因性能原因更好)
+2
'测试al,al'是根据寄存器内容设置标志的更好的习惯用法。它只写标志,所以它不会增加涉及'al'的依赖链的长度。不过,对于'pushf' /'popf'方法使用+1。 (因为'sahf' /'lahf'不包含'OF')。 –
+0
关于'或'和'测试'的好处;我相应地更新了我的答案。谢谢! – user1354557
相关问题
- 1. 如何在x86程序集中设置溢出标志?
- 2. x86程序集:INC和DEC指令和溢出标志
- 3. 如何以编程方式设置或清除32位标志?
- 4. 设置溢出标志
- 5. 设置和清除标志
- 6. x86如何硬件检测和设置溢出寄存器标志
- 7. 如何在程序集中为ATmega328p设置定时器溢出?
- 8. 如何设置装配语言中的溢出条件X86
- 9. 如何清除或不设置kLinearPCMFormatFlagIsNonInterleved
- 10. 如何“清除”溢出:可见元素?
- 11. 如何清除背景图片溢出?
- 12. 如何清除Cookie上的HttpOnly标志?
- 13. 在汇编语言中设置NEG指令设置溢出标志
- 14. 如何检测装配过程中的溢出情况Langauge X86
- 15. 加载x86或x64程序集
- 16. 堆栈溢出时,将-pie标志设置为gcc
- 17. 如何清除go-on-exec标志?
- 18. Linux x86-64中的日志库bx程序集
- 19. 如何清除应用程序输出
- 20. 如何在php中通过ajax设置标志或指标?
- 21. 如何设置FOUND_ROWS标志?
- 22. 如何在TYPO3中手动设置已删除的标志?
- 23. Tensorflow重置或清除集合
- 24. 在相机的“清除标志”属性中使用“不清除”
- 25. 如何清除NLog中的MemoryTarget日志?
- 26. 如何从片段中清除Android中的WindowManager标志
- 27. 如何在c中设置REG_KEY_DONT_VIRTUALIZE标志#
- 28. 如何在WinGhci中设置标志,Haskell
- 29. 如何清除Perl中的文件的只读标志?
- 30. CSS清除或溢出的最佳实践
执行的操作永远不会产生溢出?例如'mov ax,1; inc ax' –