任何一种通用的CPU,例如8086,都具有一种能力,可以在执行完当前正在执行的指令之后,检测到从CPU外部发送过来的或内部产生的一种特殊信息,并且可以立即对所接收到的信息进行处理。这种特殊的信息,我们可以称为:中断信息。中断的意思是指,CPU不再接着(刚执行完的指令)向下执行,而是转去处理这个特殊信息。

 

对于8086CPU,当CPU内部有下面的情况发生的时候,将产生相应的中断信息。

1)除法错误,比如,执行div指令产生的除法溢出;

2)单步执行;

3)执行into指令;

4)执行int指令。

要进行不同的处理,CPU首先要知道所接收到的中断信息的来源。所以中断信息中必须包含识别来源的编码。8086CPU用称为中断类型码的数据来识别中断信息的来源。中断类型码为一个字节型数据,可以表示256种中断信息的来源。后面我们将产生中断信息的事件,即中断信息的来源,简称为中断源,上述的4种中断源,在8086CPU中的中断类型码如下。

1) 除法错误: 0

2) 单步执行: 1

3)执行into指令: 4

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

 

CPU收到中断信息后,需要对中断信息进行处理。而如何对中断信息进行处理,可以由我们编程决定。我们编写的,用来处理中断信息的程序被称为中断处理程序。一般来说,需要对不同的中断信息编写不同的处理程序。

CPU在收到中断信息后,应该转去执行该中断信息的处理程序。我们知道,若要8086CPU执行某处的程序,就要将CS:IP指向它的入口(即程序第一条指令的地址)。

中断信息和其处理的入口程序之间是通过中断向量表建立联系的。

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

所谓中断向量表,就是中断向量的列表,中断向量,就是中断处理程序的入口地址。所以,中断向量表,就是中断处理程序入口地址的列表。

中断向量表在内存中保存,其中存放着256个中断源所对应的中断处理程序的入口。对于8086PC机,中断向量表指定放在内存地址0处。从内存0000:0000到0000:03FF的1024个单元中存放着中断向量表。一个表项存放一个中断向量,也就是一个中断处理程序的入口地址,对于8086CPU,这个入口地址包含段地址和偏移地址,所以一个表项占两个字节,高地址字存放段地址,低地址字存放偏移地址。所有,存储N号中断源对应的中断处理程序入口的偏移地址的内存单元的地址为:4N, 段地址的内存单元的地址为4N+2。

所以,CPU只要知道了中断类型码,就可以将中断类型码作为中断向量表的表项号,定位相应的表项,从而得到中断处理程序的入口地址。

posted on 2018-11-12 14:44  迷心迷  阅读(299)  评论(0编辑  收藏  举报