在 MOV SS 和 POP SS 之后禁止中断
作者: jlxip创建于 2026年9月9日更新于 2026年9月13日
使用固定后,我已经能够连续三次从 v86 中安装 Windows 98 SE。现在非常稳定。我还没有尝试过 Windows 95。英特尔的《手册》,第二卷 B 部分的 POP 章节中提到:
使用 POP 指令加载 SS 寄存器可抑制或禁止某些调试异常,并禁止在下一条指令边界上中断。(抑制行为在交付异常或执行下一条指令后结束。)这种行为允许在事件交付之前,将堆栈指针加载到 ESP 寄存器中,使用下一条指令 (POP ESP)。
事实证明, POP SS + MOV SP 由 Windows 9x 的 SMARTDRV.EXE 执行。如果没有文档中描述的行为,待处理的 IRQ 可能会通过并损坏内存。我曾经在两种情况下看到这种情况:
- #GP 在
KRNL386.EXE中的设置期间:SUWIN在0001:81E1和W98SETUP在0001:813B - 随机 #UD
内容来源: copy/v86