用于设置,清除OF和TF标志的汇编指令

moh*_*hed 5 x86 flags intel masm x86-16

是否有任何汇编指令让我们直接"设置"或"清除"英特尔8086 16位标志寄存器中的"OF"和"TF"标志?如果没有,我们应该使用什么伪代码?

Joh*_*rak 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
Run Code Online (Sandbox Code Playgroud)

要重置陷阱标志,只需使用以下指令替换前面序列中的OR指令:

AND WORD PTR[BP+0],0FEFFH
Run Code Online (Sandbox Code Playgroud)

要设置和清除溢出标志,你可以做同样的,替换0100H0800H0FEFFh0F7FFh.

TF在设置之前一定要知道它是做什么的.这是一个陷阱.