正确设置应该为
cli
mov word ptr es:[9*4],offset int9
mov es:[9*4+2],cs
sti
cli的作用是设置if=0,使cli和sti中间的2条指令不响应可屏蔽中断
为什么要这样设置呐?
我们假设你在mov word ptr es:[9*4],offset int9
指令执行后,按下键盘(当然这种几率是很小的,因为CPU运行速度很快.不过仍然是一种隐患)
那么只要按下键盘,就会执行int9中断,使cs和ip指向中断处理程序的入口地址
而cs和ip即不会指向系统原来的INT9中断例程(因为IP已经改变),也不会指向新安装的INT9中断例程(因为目前的CS指向系统原来的INT9中断例程)
所以,这个时候,CS:IP指向的是一个错误的地址
所以 要先cli,使之不响应可屏蔽中断-键盘中断
关键问题是 你在执行单步中断的时候,是按下键盘上的--T,然后按键盘上-回车
你一按键盘 就产生一个键盘中断 所以就。。。。。 |