什么是内中断?
在CUP正在执行指令时,检测到CPU内部产生一个特殊信息,并且可以立即对说接收到的信息进行处理,这种信息,我们叫做内中断。
中断向量表
在产生中断程序时,中断程序会给出一个中断类型码。之后,系统通过中断向量表来查找相应中断类型的入口地址,设置CS,IP,运行相应中断程序。
8086中,中断向量表指定存放在0000:0000内存处,从内存0000:0000到0000:03FF的1024个单元中存放着中断向量表。在中断向量表中,每一个表项存放这一个中断向量,也就是一个中断处理程序的入口。这个入口包括段地址和偏移地址,所以一个表项占用了2个字,高位存放段地址,低位存放偏移地址。
中断过程简述
- 收到中断信息
- (从中断信息中)取得中断类型码
- 标志寄存器的值入栈(因为在中断过程中要改变标记寄存器的值,所以先将其保存在栈中)
- 设置标志寄存器的第八位TF和第九位IF的值为0
- CS的内容入栈
- IP内容入栈
- 从内存地址为(中断类型码 * 4) 和(中断类型码 * 4+2)的两个字单元中读取中断处理程序的入口地址设置为IP和CS
改写0号中断代码实例
对0号中断例程序安装思路
编写一个安装程序,然后将安装程序中0号代码段的相应代码存放到一个内存中永远不会被改变的位置(这里我们选择了中断向量表中