在x86中只有一条指令的持续时间是否还有其他方法可以禁用中断?使用CLI
指令?
答案 0 :(得分:5)
是的,使用SS
加载MOV
将禁止下一条指令的外部中断。这是指令集引用所说的:
使用MOV指令加载SS寄存器会禁止所有中断 直到执行下一条指令之后。这个操作 允许将堆栈指针加载到ESP寄存器中 中断前的下一条指令(MOV ESP,堆栈指针值) 发生。
答案 1 :(得分:1)
此代码段可以解决问题:
pushf
pop ax
and ax, FDFFh
push ax
popf ;This disables interrupts, You didn't use "CLI"
; Here IF is clear
sti