任何一个通用的CPU,比如8086都具备一种能力,可以在执行完当前正在执行的指令之后,检测到从CPU外部发送过来的或内部产生的一种特殊信息, 并且可以立即对
所接收到的信息进行处理。这种特殊的信息,我们可以称其为:中断信息。中断的意思是指,CPU不再接着(刚执行完的指令)向下执行,而是转去处理这个特殊信息。
注意,我们这里所说的中断信自、,是为了便于理解而采用的一种逻辑上的说法。它是对几个具有先后顺序的硬件操作所产生的事件的统一描述。“中断信息”是要求CPU马上进行某种处理,并向所要进行的该种处理提供了必备的参数的通知信息。因为本书的内容不是微机原理与接口或组成原理,我们只能用一些便于理解的说法来描述一些比较复杂的机器工作原理,从而使学习者忽略一些和我们‘的学习重心无关的内容。但笔者又需要对
这些问题有一个严谨的交代,所以,有了这些补充说明的文字。如果你不理解这些文字所讲的东西,就不必去理解了。
中断信息可以来自CPU的内部和外部,这一章中,我们主要讨论来自于CPU内部的中断信息。
内中断的产生
当CPU8086CPU,当的内部有什么事情发生的时候,将产生需要马上处理的中断信息呢?对于CPU内部有下血的情况发生的时候,将产生相应的中断信息。
(1)除法错误,比如,执行div指令产生的除法溢出;
(2)单步执行:
(3)执行into指令;
(4)执行int指令。
我们现在不要去管这4种情况的具体含义,只要知道CPU内部有4种情况可以产生需要及时处理的中断信息即可。虽然我们现在并不很清楚,这4种情况到底是什么,但是有一点是很清楚的,即,它们是不同的信息。既然是不同的信息,就需要进行不同的处理。要进行不同的处理,CPU首先要知道,所接收到的中断信息的来源。所以中断信息中必须包含识别来源的编码。8086CPU用称为中断类型码的数据来标识中断信息的来源。中断类型码为个字节型数据,可以表示256种中断信息的来源。以后,我们将产生中断信息的事件,以lJ中断信息的来源,简称为中断源,_r__述的4种中断源,在8086CPU中的中断类型码如下。
(1)除法错误:0
(2)单步执行:1
(3)执行into指令:4
(4)执行int指令,该指令的格式为int n,指令中的n为字节型立即数,是提供给CPU的中断类型码。
中断处理程序
CPU收到中断信息后,需要对中断信息进行处理。而如何对中断信息进行处理,可以由我们编程决定。我们编写的,用来处理中断信息的程序被称为中断处理程序。一般来说,需要对不同的中断信息编写不I司的处理程序。
CPU在收到中断信息后,应该转去执行该中断信息的处理程序。我们知道,若要8086CPU执行某处的程序,就要将CS:IP指向它的入口(即程序第一条指令的地址)。可见首要的问题是,CPU在收到I一户断信息后,如何根据中断信息确定其处理程序的入口。
CPU的设计者必须在中断信息和其处理程序的入口地址之间建立某种联系,使得CPU根据中断信息可以找到要执于了的处理程序。
我们知道,中断信息中包含有标识中断源的类型码。根据CPU的设计,中断类型码的作用就是用来定位中断处理程序。比如CPU根据中断类型码4,就可以找到4号中断的处理程序。可随之而来的问题是,若要定位中断处理程序,需要知道它的段地址和偏移地址,而如何根据8位的中断类型码得到中断处理程序的段地址和偏移地址呢?