是否有任何汇编指令让我们直接“设置”或“清除”英特尔8086 16位标志寄存器中的“OF”和“TF”标志?如果没有,我们应该使用什么伪代码?
答案 0 :(得分:8)
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
要重置陷阱标志,只需使用以下指令替换前面序列中的OR指令:
AND WORD PTR[BP+0],0FEFFH
要设置和清除溢出标记,您可以执行相同操作,将0100H
替换为0800H
,将0FEFFh
替换为0F7FFh
。
在设置之前,请务必了解TF
的作用。这是一个陷阱。