参考答案
1)
由于这段程序是在中断例程中执行的,因此在进入中断例程时,标志位 IF TF 已经设置为零,无需再次设置:
pushf call dword ptr ds:[0]
2)
问题出现在 mov word ptr es:[9*4], offset int9 与 mov es:[9*4+2], cs 之间
当执行 mov word ptr es:[9*4], offset int9 以后,发生中断,
此时中断向量表的 9 号中断的偏移地址发生变化,但是段地址还没有修改,因此会去该地址执行未知指令。
核心问题就是 中断向量表的条目改了壹半。解决方法如下:
...... cif mov word ptr es:[9*4] offset int9 与 mov es:[9*4+2], cs sif ......
参考文献
K4NZ / 参考答案:检测点 15.1
CSDN/汇编语言王爽第三版答案
百度文库/汇编语言实验答案 (王爽)