汇编-12.0-内中断

任何一个通用CPU,都具备可以在执行完当前正在执行的指令后,检测从CPU外部发送过来的或内部产生的

中断信息。

中断信息可以来自CPU的内部和外部。

1.内中断的产生

(1).除法错误(中断类型码:0),如:执行div指令产生的除法溢出;

(2).单步执行(中断类型码:1);

(3).执行into指令(中断类型码:4);

(4).执行int指令(中断类型码:int n,指令中的n为字节型立即数,是提供给CPU的中断类型码)。

2.中断处理程序

CPU在收到中断信息后,应该转去执行该中断的处理程序.

若要CPU执行某处程序,就要将CS:IP指向它的入口(即程序的第一条指令地址).

中断类型码的作用就是用来定位中断处理程序.

3.中断向量表

CPU用8位的中断类型码通过中断向量表找到相应的中断处理程序的入口地址.

中断向量,就是中断处理程序的入口地址.

中断向量表,就是中断处理程序入口地址的列表.

中断向量表在内存中保存,其中存放着256个中断源所对应的中断处理程序的入口.

只要得到了中断类型码,就可以将中断类型码作为中断向量表的表项号,定位相应的表项,从而

得到中断处理程序的入口地址.

4中断过程

用中断类型码找到中断向量,并用它设置CS和IP,这个工作是由CPU的硬件自动完成的.

CPU硬件完成这个工作的过程被称为中断过程.

CPU收到中断信息后,要对中断信息进行处理,首要将引发中断过程,硬件完成中断过程后,

CS:IP将指向中断处理程序的入口,CPU开始执行中断处理程序.

在中断设置CS:IP之前,还要将原来的CS和IP的值保存起来.在使用call指令调用子程序有同样的问题.

子程序执行完毕后,还要返回原来的执行点继续执行,所以call指令先保存当前CS和IP的值.

CPU收到中断信息后,引发中断过程:

(1).(从中断信息中)取得中断类型码;

(2).标志寄存器的值入栈(因为在中断过程中要改变标志寄存器的值,所以先将其保存在栈中);

(3).设置标志寄存器的第8位TF和第9位IF的值位0;

(4).CS的内容入栈;

(5).IP的内容入栈;

(6).从内存地址为中断类型码*4和中断类型码*4+2的两个字节单元中读取中断处理过程的入口地址设置IP和CS.

猜你喜欢

转载自www.cnblogs.com/xigongxiaosha/p/9488694.html
今日推荐