我想写一个简单的代码(或算法)来设置/清除溢出标志。你可以帮我吗?如何在x86程序集中设置溢出标志?
回答
要设置(在MASM语法)
pushf ; mov EFLAGS to stack
bts dword ptr [esp], 11 ; set OF flag
popf ; write it back to status register
的Overflow flag(OF) - Bit 11 of EFLAGS使用和分别使用以下方法来标志复位:作为副作用
pushf ; mov EFLAGS to stack
btr dword ptr [esp], 11 ; reset OF flag
popf ; write it back to status register
带有内存目的地的'or'或'and'比'bts更少uops [mem],imm'在Intel CPU上。即使立即进行位计数,具有内存目标的'bts'和朋友效率也不高,所以一般情况下要避免使用内存操作数,而不是需要原子('lock')测试和设置。 –
许多指令明确OF
,例如test
。因此,您可以编写类似test eax, eax
的东西,并且将清除OF
,但它会影响其他标志。你没有说明是否允许。
要设置OF
,您可以执行一些操作来设置它。例如,加1的最大正数:mov al, 0x7f; add al, 1
或者,可以使标志的副本使用pushf
在栈上,对其进行修改,以自己的喜好,然后使用popf
找回来。
您应该考虑在此删除您的答案并将其移至副本。或者标记这个问题并要求版主将其所有答案合并到副本中。 –
- 1. 如何设置或清除x86程序集中的溢出标志?
- 2. x86程序集:INC和DEC指令和溢出标志
- 3. 设置溢出标志
- 4. 如何在程序集中为ATmega328p设置定时器溢出?
- 5. x86如何硬件检测和设置溢出寄存器标志
- 6. 如何设置装配语言中的溢出条件X86
- 7. 在汇编语言中设置NEG指令设置溢出标志
- 8. 如何在c中设置REG_KEY_DONT_VIRTUALIZE标志#
- 9. 如何在WinGhci中设置标志,Haskell
- 10. 堆栈溢出时,将-pie标志设置为gcc
- 11. 如何检测装配过程中的溢出情况Langauge X86
- 12. 如何设置FOUND_ROWS标志?
- 13. Linux x86-64中的日志库bx程序集
- 14. 为什么CMP(compare)有时会在8086程序集中设置进位标志?
- 15. 在程序集x86中将字符打印到标准输出中
- 16. 如何设置 - 默认在git中设置标志?
- 17. 如何在x86程序集中将CH添加到EAX中?
- 18. 如何在x86程序集中输出用户输入的居中文本?
- 19. 如何在“Nand to Tetris”课程中为ALU设置输出标志?
- 20. 在Inno Setup中设置“RUNASADMIN”应用程序兼容性标志
- 21. Segfault与x86程序集
- 22. 如何在Windows的x86程序集中编写系统调用?
- 23. 如何在程序集x86中使用mod
- 24. 如何在x86程序集中增加数组?
- 25. 如何在AngularJS应用程序的主体上动态设置溢出问题
- 26. 如何在php中通过ajax设置标志或指标?
- 27. 如何在Exchange 2007 w/SP2中设置“标记完成”标志
- 28. 序言集,堆栈溢出
- 29. x86程序集中的mov指令
- 30. DOS中断masm x86程序集崩溃
http://stackoverflow.com/questions/1406783/flags-registers-can-we-read-or-write-them-directly – ABuckau