是否有汇编指令可以直接“设置”或“清除”Intel的8086 16位标志寄存器中的“OF”和“TF”标志?如果没有,我们应该使用什么伪代码?
http://en.wikipedia.org/wiki/Trap_flag
8086没有直接设置或重置陷阱标志的指令。这些操作是通过将标志寄存器推入堆栈,将陷阱标志位更改为程序员想要的值,然后从堆栈中弹出标志寄存器来完成的。设置陷阱标志的指令如下:
PUSHF ; Push flags on stack
MOV BP,SP ; Copy SP to BP for use as index
OR WORD PTR[BP+0],0100H ; Set TF flag
POPF ; Restore flag Register
AND WORD PTR[BP+0],0FEFFH
要设置和清除溢出标志,您可以做同样的事情,将0100H
替换为0800H
,并将0FEFFh
替换为0F7FFh
。
在设置TF
之前,请确保知道它的作用。这是一个陷阱。
mov bp,sp
并使用 bp 寄存器,而不是只使用 sp 寄存器执行 or word [sp], 0100h
? - golem