1、1计算机接口技术计算机接口技术 CPUCPU与外设交换信息时,若采用异步查询方式,即与外设交换信息时,若采用异步查询方式,即CPUCPU首先检查外设的首先检查外设的状态,若外设准备好了,状态,若外设准备好了,CPUCPU才能与外设交换数据;若外设没有准备好,才能与外设交换数据;若外设没有准备好,CPUCPU要反复查询等待外设准备就绪,因此浪费很多时间,降低了工作效率,要反复查询等待外设准备就绪,因此浪费很多时间,降低了工作效率,这样这样产生了快速的产生了快速的CPUCPU与慢速的外设之间数据传输的矛盾与慢速的外设之间数据传输的矛盾。为解决这个问题,一方面要为解决这个问题,一方面要提高外设的工作
2、速度提高外设的工作速度,另一方面,另一方面引入了中引入了中断断概念。中断系统是计算机的重要指标之一。概念。中断系统是计算机的重要指标之一。中断的引入中断的引入2计算机接口技术计算机接口技术9.1 9.1 中断原理中断原理 9.1.1 9.1.1 从无条件传输、条件传输到中断传输从无条件传输、条件传输到中断传输 CPU无须知道外设的工作状态,认为外设已经准备好,即外设无无须知道外设的工作状态,认为外设已经准备好,即外设无条件地准备好向条件地准备好向CPU提供数据或接收提供数据或接收CPU输出的数据,输出的数据,CPU不必查不必查询外设的状态,可无条件地与外设交换信息。询外设的状态,可无条件地与外
3、设交换信息。如:开关、发光二极管、继电器等简单的外设。如:开关、发光二极管、继电器等简单的外设。无条件传输时,外设不用提供无条件传输时,外设不用提供状态线状态线。1 1、无条件传输无条件传输3计算机接口技术计算机接口技术2 2、条件传输条件传输 由于外设的工作速度比由于外设的工作速度比CPUCPU慢,外设并不是慢,外设并不是总是准备好的,总是准备好的,CPUCPU与这类外设进行数据交换与这类外设进行数据交换时,常采用条件传输方式(异步查询方式)。时,常采用条件传输方式(异步查询方式)。即即CPUCPU与外设交换数据前,用与外设交换数据前,用程序程序对外设的对外设的状态状态线线进行查询,查询外设
4、状态进行查询,查询外设状态“你准备好没你准备好没有?有?”若外设已经准备好,则改变状态线上的逻若外设已经准备好,则改变状态线上的逻辑信号来通知辑信号来通知CPUCPU,完成,完成CPUCPU与外设的数据交换。与外设的数据交换。缺点缺点:CPUCPU不停地查询、等待外设,浪费时不停地查询、等待外设,浪费时间,间,CPUCPU效率低。效率低。图图1 1 条件传输条件传输(程序检测状态信号程序检测状态信号)4计算机接口技术计算机接口技术3 3、中断传输中断传输 利用利用硬件电路硬件电路查询外设的查询外设的状态线状态线,CPU执行本身主程序,执行本身主程序,无需查询外设状态无需查询外设状态,当,当外设
5、准备好与外设准备好与CPU交换数据时,向交换数据时,向CPU发出中断请求信号(即改变状态线的逻辑发出中断请求信号(即改变状态线的逻辑信号),请求与信号),请求与CPU交换数据交换数据。硬件电路。硬件电路检测到状态线上的信号改变时,若检测到状态线上的信号改变时,若中断允中断允许触发器许触发器允许允许CPU响应中断,则响应中断,则CPU响响应中断,暂停当前主程序,执行中断服务应中断,暂停当前主程序,执行中断服务程序,完成数据交换后,返回主程序继续程序,完成数据交换后,返回主程序继续执行。执行。状态线称为状态线称为中断请求线;中断请求线;硬件电路称为硬件电路称为中断逻辑电路。中断逻辑电路。图图2 2
6、 中断传输中断传输(CPU(CPU硬件检测状态信号硬件检测状态信号)5计算机接口技术计算机接口技术PC4PC5PC3PA7PA0INTEAIBFAINTRASTBAPC6PC7RD图图3 8255A 选通输入方式选通输入方式(A口口)A A口的中断请求信号,口的中断请求信号,8255A8255A发出,有效时,表示发出,有效时,表示A A口向口向CPUCPU发出中断请求信号,请求发出中断请求信号,请求CPUCPU从从A A口取数据。口取数据。I/O6计算机接口技术计算机接口技术9.1 9.1 中断原理中断原理9.1.2 9.1.2 中断概念中断概念图图4 4 中断举例中断举例7计算机接口技术计算
7、机接口技术 CPU CPU执行程序时,执行程序时,由于发生了某种随机的事件由于发生了某种随机的事件(外部或内部外部或内部),引起,引起CPUCPU暂时中断正在运行的程序,转去执行一段特殊的服务暂时中断正在运行的程序,转去执行一段特殊的服务程序程序(中断服务程序或中断处理程序中断服务程序或中断处理程序),以处理该事件,该事件处,以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程称为理完后又返回被中断的程序继续执行,这一过程称为中断中断。由于中断的发生,正在执行的程序被暂停执行,该程序中被由于中断的发生,正在执行的程序被暂停执行,该程序中被中断而未执行的那条中断而未执行的那条指令的地
8、址指令的地址称为中断断点,简称称为中断断点,简称断点断点。8计算机接口技术计算机接口技术9.1.3 9.1.3 中断应用中断应用一、实时故障处理一、实时故障处理 存储器出错检测电路存储器出错检测电路 图图5 5 存储器出错检测电路存储器出错检测电路9计算机接口技术计算机接口技术处理处理任务任务1处理处理任务任务2处理处理任务任务3图图6分时操作同时处理分时操作同时处理二、分时操作,同时处理二、分时操作,同时处理 CPUCPU与多个外设同时工作,虽然与多个外设同时工作,虽然CPUCPU在不同的时间点上为不同的在不同的时间点上为不同的外设服务工作,但宏观上看外设服务工作,但宏观上看CPUCPU几乎
9、同时为不同的外设服务工作,发几乎同时为不同的外设服务工作,发挥了挥了CPUCPU高速性的特点。高速性的特点。1011计算机接口技术计算机接口技术9.2 9.2 中断系统组成及其功能中断系统组成及其功能9.2.1 9.2.1 三个与中断有关的触发器三个与中断有关的触发器一、一、中断请求触发器中断请求触发器 两个特点:两个特点:1 1、它的输出可作为中断请求信号,在满足一定的条件下,可把信号发、它的输出可作为中断请求信号,在满足一定的条件下,可把信号发送给送给CPUCPU,并在,并在CPUCPU未响应时一直保存下去;未响应时一直保存下去;2 2、当、当CPUCPU满足一定条件下响应了该中断请求信号
10、,执行相关的操作后,满足一定条件下响应了该中断请求信号,执行相关的操作后,该中断请求信号可以被撤除。该中断请求信号可以被撤除。图图7 7 中断请求信号产生电路中断请求信号产生电路12计算机接口技术计算机接口技术2 2、中断源的种类中断源的种类 引起中断的外设或内部原因称为引起中断的外设或内部原因称为中断源中断源,分为:分为:内部中断内部中断和和外部中断外部中断 内部中断:内部中断:CPUCPU内部执行程序时自身产生的中断。内部执行程序时自身产生的中断。包括除法中断、溢出中断、软中断、断点中断和单步中断等。包括除法中断、溢出中断、软中断、断点中断和单步中断等。外部中断:外部中断:CPUCPU以外
11、的设备、部件产生的中断。以外的设备、部件产生的中断。又分为:又分为:可屏蔽中断可屏蔽中断INTRINTR和和不可屏蔽中断不可屏蔽中断NMINMI。有以下几种:有以下几种:(1 1)数据输入)数据输入/输出外设请求中断;输出外设请求中断;(2 2)定时时间到请求中断;)定时时间到请求中断;(3 3)满足规定状态请求中断;)满足规定状态请求中断;(4 4)电源掉电请求中断;)电源掉电请求中断;(5 5)故障报警请求中断;)故障报警请求中断;(6 6)程序调试设置中断。)程序调试设置中断。13计算机接口技术计算机接口技术二、二、中断屏蔽触发器中断屏蔽触发器 中断屏蔽触发器中断屏蔽触发器功能就是决定功
12、能就是决定中断请求触发器中断请求触发器的输出信号是否可以的输出信号是否可以作为中断请求信号发送给作为中断请求信号发送给CPUCPU,CPUCPU通过设置中断屏蔽触发器,达到对通过设置中断屏蔽触发器,达到对中断源的控制。中断源的控制。0 114计算机接口技术计算机接口技术PC4PC5PC3PA7PA0INTEAIBFAINTRASTBAPC6PC7RDA A口的中断请求信号,有效时,口的中断请求信号,有效时,表示表示A A口向口向CPUCPU发出中断请求发出中断请求信号,请求信号,请求CPUCPU从从A A口取数据。口取数据。I/OPC4置置1,INTEA 1,A口处于中断允许状态,当口处于中断
13、允许状态,当STBA1,IBFA1时,时,INTRA有效,向有效,向CPU申请中断。申请中断。PC4复位,复位,INTEA 0,A口处于中断屏蔽状态,口处于中断屏蔽状态,INTRA无效。无效。15计算机接口技术计算机接口技术三、三、中断允许触发器中断允许触发器 CPUCPU通过对内部的通过对内部的中断允许触发器中断允许触发器进行设置,来决定是否对发给它进行设置,来决定是否对发给它的中断请求信号进行响应。的中断请求信号进行响应。8086 CPU8086 CPU的标志寄存器的标志寄存器FRFR中的中的IFIF标志位标志位,就是,就是中断允许触发器中断允许触发器。IF=1IF=1,允许,允许CPUC
14、PU响应中断,称响应中断,称CPUCPU开中断开中断;IF=0IF=0,不允许,不允许CPUCPU响应中断,称响应中断,称CPUCPU关中断关中断。中断检测中断检测IF中断逻辑中断逻辑INTRINTRSTISTI ;IFIF1 1 开中断开中断 CLICLI ;IFIF0 0 关中断关中断16计算机接口技术计算机接口技术中断检测中断检测IF中断逻辑中断逻辑INTRINTRNMINMI不可屏蔽中断8086 CPU8086 CPU有两种中断类型:有两种中断类型:可屏蔽中断和可屏蔽中断和不可屏蔽中断不可屏蔽中断。可屏蔽中断可屏蔽中断受受中断允许触发器中断允许触发器控制,只有当控制,只有当IFIF为为
15、1 1时,时,CPUCPU才能才能响应中断请求信号。响应中断请求信号。不可屏蔽中断不可屏蔽中断不受不受中断允许触发器中断允许触发器的控制,只要中断请求信号的控制,只要中断请求信号有效,不管有效,不管IFIF是否为是否为1 1,CPUCPU就必须响应。因此就必须响应。因此NMINMI的中断优先级的中断优先级大于大于INTRINTR的中断优先级。的中断优先级。17计算机接口技术计算机接口技术9.29.2 中断系统组成及其功能中断系统组成及其功能 9.2.2 9.2.2 中断条件中断条件 外设的中断请求信号要想发给外设的中断请求信号要想发给CPUCPU并能最终得到并能最终得到CPUCPU的响应,必须
16、要满的响应,必须要满足以下两个条件:足以下两个条件:1 1、是、是中断屏蔽触发器中断屏蔽触发器处于非屏蔽状态。在这种情况下,中断请求信处于非屏蔽状态。在这种情况下,中断请求信号才能发给号才能发给CPUCPU。2 2、CPUCPU是否相应这个中断,还要看是否相应这个中断,还要看中断允许触发器中断允许触发器是否处于开中断状是否处于开中断状态。只有态。只有CPUCPU是开中断的条件下,是开中断的条件下,CPUCPU才能进入中断响应过程,处理中断才能进入中断响应过程,处理中断事务。事务。中断中断响应响应中断屏蔽中断屏蔽触发器触发器中断允许中断允许触发器触发器CPU内的中断逻辑内的中断逻辑中断申中断申请
17、信号请信号INTR18计算机接口技术计算机接口技术9.2.3 9.2.3 中断响应过程中断响应过程中断过程主要包括中断过程主要包括3 3个方面个方面:外设发中断请求信号给外设发中断请求信号给CPUCPU,即,即中断请求中断请求;CPUCPU对中断请求信号所作出的反应,即对中断请求信号所作出的反应,即中断响应中断响应;CPUCPU执行对外设服务子程序,即执行对外设服务子程序,即中断处理中断处理。1 1、中断请求中断请求 当外设准备好与当外设准备好与CPUCPU交换数据时,置中断请求触发器有效,交换数据时,置中断请求触发器有效,而当中断屏蔽触发器状态为而当中断屏蔽触发器状态为1 1,则中断请求触发
18、器输出的中断,则中断请求触发器输出的中断请求信号发给请求信号发给CPUCPU。19计算机接口技术计算机接口技术二、二、中断响应中断响应 CPUCPU响应响应可屏蔽中断可屏蔽中断请求条件请求条件:无不可屏蔽中断请求和总线请求;无不可屏蔽中断请求和总线请求;CPUCPU处于中断允许状态(处于中断允许状态(IF=1IF=1),被允许中断;),被允许中断;CPUCPU执行完当前指令。执行完当前指令。CPU CPU响应响应不可屏蔽中断不可屏蔽中断请求条件:请求条件:无总线请求;无总线请求;CPUCPU执行完当前指令。执行完当前指令。响应响应内部中断内部中断条件:条件:CPUCPU执行完当前指令。执行完当
19、前指令。20计算机接口技术计算机接口技术三、三、中断处理中断处理 CPUCPU响应中断后自动完成响应中断后自动完成3 3项任务:项任务:1 1、关闭中断;、关闭中断;2 2、CSCS、IPIP以及以及FRFR的内容送入堆栈;的内容送入堆栈;3 3、中断服务程序段地址送、中断服务程序段地址送CSCS中中,偏移地址送偏移地址送IPIP中。中。为什么要关中断?为什么要关中断?1 1、对于电平触发的中断,当、对于电平触发的中断,当CPUCPU响应中断后,若不关中断,则本次中断还响应中断后,若不关中断,则本次中断还会引起新的中断;会引起新的中断;2 2、CPUCPU响应中断后,要暂停正在执行的主程序,转
20、去执行中断服务程序,响应中断后,要暂停正在执行的主程序,转去执行中断服务程序,执行完后还要再返回到主程序继续执行。所以要执行完后还要再返回到主程序继续执行。所以要保护断点、保护现场保护断点、保护现场,不,不允许中断信号打断。允许中断信号打断。21计算机接口技术计算机接口技术 PUSH AX PUSH AX;1 1、保护现场、保护现场?PUSH BX PUSH BX STI STI;2 2、开中断、开中断?;3 3、中断服务、中断服务 CLICLI;4 4、关中断、关中断?POP BXPOP BX;5 5、恢复现场、恢复现场?POP AX POP AX STI STI;6 6、开中断、开中断?I
21、RETIRET;7 7、中断返回、中断返回?一旦一旦CPUCPU响应中断,就可转入中断服务程序之中。中断服务程序响应中断,就可转入中断服务程序之中。中断服务程序的结构如下:的结构如下:22计算机接口技术计算机接口技术中断过程中断过程中断过程中断过程 对于不同的计算机系统,对于不同的计算机系统,对于不同的计算机系统,对于不同的计算机系统,CPUCPU中断处理的具体过程不尽相同,但是一个中断处理的具体过程不尽相同,但是一个中断处理的具体过程不尽相同,但是一个中断处理的具体过程不尽相同,但是一个完整的中断基本过程应包括五个基本过程:完整的中断基本过程应包括五个基本过程:完整的中断基本过程应包括五个基
22、本过程:完整的中断基本过程应包括五个基本过程:中中中中断断断断请请请请求求求求中中中中断断断断判判判判优优优优中中中中断断断断响响响响应应应应中中中中断断断断处处处处理理理理中中中中断断断断返返返返回回回回产生中断信号。来自于中断产生中断信号。来自于中断断指令或断指令或CPU引脚。每个中引脚。每个中断接口电路有一个中断请求断接口电路有一个中断请求触发器和中断屏蔽触发器。触发器和中断屏蔽触发器。确定有中断请求且优先级确定有中断请求且优先级最高的那个中断源。最高的那个中断源。CPU响应进入中断周期,响应进入中断周期,自动完成下列工作:自动完成下列工作:关中断;保护断点;关中断;保护断点;形成中断服
23、务程序入口地址形成中断服务程序入口地址中断处理就是中断处理就是CPU执行执行中断服务程序过程。中断服务程序过程。中断服务程序结构如图中断服务程序结构如图保护现场开中断中断服务关中断恢复现场开中断返回弹出断点,返回主程序。弹出断点,返回主程序。24计算机接口技术计算机接口技术9.3 9.3 中断源识别及中断优先权中断源识别及中断优先权1 1、当系统中有多个中断源存在时,若有几个中断源同时提出中断请求,、当系统中有多个中断源存在时,若有几个中断源同时提出中断请求,CPUCPU如何判别是哪一个中断源发出的中断请求信号如何判别是哪一个中断源发出的中断请求信号?中断源识别问题中断源识别问题2 2、当系统
24、中有多个中断源存在时,若有几个中断源同时提出中断请求,、当系统中有多个中断源存在时,若有几个中断源同时提出中断请求,CPUCPU先响应谁?先响应谁?3 3、当、当CPUCPU正在响应某一中断过程中,又有另外的中断源提出中断请求,正在响应某一中断过程中,又有另外的中断源提出中断请求,CPUCPU是否响应是否响应?中断优先权问题中断优先权问题 A B CCPUINTR25计算机接口技术计算机接口技术9.3.1 9.3.1 中断源识别中断源识别 CPU CPU只有正确地确定中断源,才能转到相应的中断服务程序为之服务。确只有正确地确定中断源,才能转到相应的中断服务程序为之服务。确定中断源的方法被称为定
25、中断源的方法被称为中断源识别中断源识别。包括两个方面:包括两个方面:1 1、确定中断源;、确定中断源;2 2、找到该中断服务程序的首地址。、找到该中断服务程序的首地址。一、一、查询中断查询中断26计算机接口技术计算机接口技术查询程序查询程序:IN AL,IPORT ;从输入接口读取中断信息 TEST AL,80H ;是0号设备请求吗?JNZ SEVO ;是,转0号设备服务程序TEST AL,40H ;否,是1号设备请求吗?JNZ SEVl ;是,转1号设备服务程序TEST AL,20H ;否,是2号设备请求吗?JNZ SEV2 ;是,转2号设备服务程序TEST AL,10H ;否,是3号设备请
26、求吗?JNZ SEV3 ;是,转3号设备服务程序查询中断条件传输?查询中断条件传输?哪个设备的优先级最高哪个设备的优先级最高?27计算机接口技术计算机接口技术二、二、矢量中断矢量中断 当外设需要当外设需要CPUCPU为之服务时,发出为之服务时,发出中断申请信号中断申请信号INTRINTR给给CPUCPU,请求,请求CPUCPU为为之服务。若之服务。若CPUCPU允许响应中断,则允许响应中断,则CPUCPU发出发出中断响应信号中断响应信号INTAINTA给外设,表明给外设,表明CPUCPU可以为外设服务,同时要求外设提可以为外设服务,同时要求外设提供设备号。供设备号。CPUCPU再根据设备号计算
27、出中再根据设备号计算出中断服务程序的入口地址,转去执行中断服务程序的入口地址,转去执行中断服务程序。断服务程序。这种确定中断源的方法称为这种确定中断源的方法称为矢量中断矢量中断。外设的设备号称为外设的设备号称为中断矢量中断矢量或或中断类型号中断类型号。28计算机接口技术计算机接口技术中断类型号中断类型号80H80H的产生电路的产生电路 29计算机接口技术计算机接口技术9.3.2 9.3.2 中断优先权中断优先权一、一、软件方案软件方案 IN AL,IPORT ;从输入接口读取中断信息 TEST AL,80H;是0号设备请求吗?JNZ SEVO ;是,转0号设备服务程序TEST AL,40H;否
28、,是1号设备请求吗?JNZ SEVl ;是,转1号设备服务程序TEST AL,20H ;否,是2号设备请求吗?JNZ SEV2;是,转2号设备服务程序TEST AL,10H;否,是3号设备请求吗?JNZ SEV3;是,转3号设备服务程序*软件查询次序就是优先权高低的次序;软件查询次序就是优先权高低的次序;*中断源较多时,查询时间较长,中断响应较慢,服务效率低。中断源较多时,查询时间较长,中断响应较慢,服务效率低。3001 0二、二、硬件方案硬件方案1 1、链形电路、链形电路 这种方法是利用外设在系统中的物理位置来决定其中断优先权的。这种方法是利用外设在系统中的物理位置来决定其中断优先权的。中断
29、申请中断申请031计算机接口技术计算机接口技术2 2、利用、利用74LS14874LS148编码电路产生编码电路产生8 8个中断类型号个中断类型号 74LSl4874LSl48是一个是一个8 8线线3 3线的优先权编码器,它是具有线的优先权编码器,它是具有1616个管脚双列直插个管脚双列直插式式TTLTTL器件。器件。32计算机接口技术计算机接口技术中断申请信号338259AIR0IR1IR2IR3IR4IR5IR6IR7INT n指令指令溢出溢出中断中断除法除法出错出错单步单步中断中断中断逻辑中断逻辑NMIINTRCPU断点断点中断中断计算机接口技术计算机接口技术9.4 9.4 808680
30、86中断系统中断系统一、两类中断源:一、两类中断源:1 1、硬件中断(、硬件中断(外部中断)外部中断):由外部设备产生的中断。分为:由外部设备产生的中断。分为可屏蔽中断可屏蔽中断和和不可屏蔽中断不可屏蔽中断,硬件中断是通过,硬件中断是通过CPUCPU的的INTRINTR管脚管脚或或NMINMI管脚管脚从外部引入。从外部引入。2 2、软件中断、软件中断(内部中断内部中断):是由指令或指令运行的结果产生的中断。):是由指令或指令运行的结果产生的中断。外部中断(硬件中断)外部中断(硬件中断)内部中断(软件中断)内部中断(软件中断)不可屏蔽中断请求不可屏蔽中断请求可可屏屏蔽蔽中中断断请请求求34计算机
31、接口技术计算机接口技术二、二、中断类型号中断类型号8086有有256个中断,每个中断都有一个中断类型号个中断,每个中断都有一个中断类型号0FFH(0255)。8086在内存前在内存前1K字节(字节(RAM:00000H003FFH)建立一个中断服务)建立一个中断服务程序的入口地址表(中断向量表),中断服务程序的入口地址事先存入程序的入口地址表(中断向量表),中断服务程序的入口地址事先存入该区域中,每个入口地址占该区域中,每个入口地址占4个字节个字节。高地址单元存放服务程序入口地。高地址单元存放服务程序入口地址的址的段地址段地址,低地址单元存放,低地址单元存放偏移地址偏移地址。中断服务程序的入口
32、地址从中断服务程序的入口地址从“中断类型号中断类型号 4”的的RAM区中找到。区中找到。中断类型号中断类型号和和中断服务程序的入口地址中断服务程序的入口地址之间的关系:之间的关系:35计算机接口技术计算机接口技术问:问:中断类型号中断类型号17H17H的中断服务程序的入口地址的中断服务程序的入口地址2345:78902345:7890,入口地址如何存放?入口地址如何存放?17H4=5CH17H4=5CH该中断类型号该中断类型号17H17H的中断服务程序入口地址存放在的中断服务程序入口地址存放在0000H0000H:005CH005CH开始的开始的4 4个个连续单元中。连续单元中。(CS)=23
33、45H(CS)=2345H,(IP)=7890H(IP)=7890H;物理地址是;物理地址是2ACE0H2ACE0H。3637计算机接口技术计算机接口技术中断响应周期的时序中断响应周期的时序AD7AD0ALEINTACLK中断类型T1T2T3T4TIT1T2T3T4TITI当外设的中断请求未被屏蔽,且当外设的中断请求未被屏蔽,且IF=1IF=1,CPUCPU在当前指令周期的最后一个在当前指令周期的最后一个T T状状态去采样态去采样INTRINTR引脚引脚,若有效,若有效,CPUCPU予以响应。予以响应。CPUCPU将执行两个连续的中断响将执行两个连续的中断响应周期,送出应周期,送出两个中断响应
34、信号两个中断响应信号INTAINTA。第一个响应周期,通知外设。第一个响应周期,通知外设CPUCPU准备准备响应中断,外设准备好中断类型号;在第二个响应周期,外设向数据总线响应中断,外设准备好中断类型号;在第二个响应周期,外设向数据总线输送一个字节的中断类型号,输送一个字节的中断类型号,CPUCPU读入后,在中断向量表中找到该类型号的读入后,在中断向量表中找到该类型号的中断服务程序的入口地址,转入中断处理中断服务程序的入口地址,转入中断处理。38计算机接口技术计算机接口技术9.4.1 9.4.1 不可屏蔽中断不可屏蔽中断不可屏蔽中断就是用户不能通过不可屏蔽中断就是用户不能通过CPUCPU内的内
35、的中断允许触发器中断允许触发器IFIF控制控制的中断,由的中断,由8086 CPU8086 CPU的的NMINMI管脚管脚引入。引入。NMINMI中断请求采用中断请求采用上升沿触发方上升沿触发方式式,这种中断一旦产生,在,这种中断一旦产生,在CPUCPU内部直接生成内部直接生成中断类型号中断类型号2 2。中断服务中断服务程序入口地址固定存放于程序入口地址固定存放于00008H00008H0000BH0000BH中,用于发生重大故障如系中,用于发生重大故障如系统掉电、统掉电、I/OI/O通道出现奇偶校验错等时的中断请求。通道出现奇偶校验错等时的中断请求。39计算机接口技术计算机接口技术9.4.2
36、 9.4.2 可屏蔽中断可屏蔽中断 可屏蔽中断就是用户可以控制的中断,通过对可屏蔽中断就是用户可以控制的中断,通过对CPUCPU内的内的中断允许触发器中断允许触发器IFIF的设置来禁止和允许的设置来禁止和允许CPUCPU响应中断。可屏蔽中断由响应中断。可屏蔽中断由8086CPU8086CPU的的INTRINTR管脚管脚引入,引入,采用采用电平触发方式电平触发方式,这种中断请求需要设备提供,这种中断请求需要设备提供中断类型号中断类型号,CPUCPU响应中断响应中断后,取中断类型号的后,取中断类型号的4 4倍作为中断服务入口地址表的地址,通过查表得到相倍作为中断服务入口地址表的地址,通过查表得到相
37、应的中断服务程序首地址,转去执行相应的中断服务程序。应的中断服务程序首地址,转去执行相应的中断服务程序。40计算机接口技术计算机接口技术9.4.3 9.4.3 软件中断软件中断软件中断是由软件中断是由80868086指令系统中的某些指令产生,或由这些指令运行后某指令系统中的某些指令产生,或由这些指令运行后某种特定的结果产生。种特定的结果产生。一、一、除法出错中断除法出错中断 当进行除法运算时,若除数为当进行除法运算时,若除数为0 0或除数太小,使得商数大于相应寄存器或除数太小,使得商数大于相应寄存器所能表示的最大值,称为所能表示的最大值,称为除法出错中断除法出错中断。这时除法指令就相当于一个中
38、。这时除法指令就相当于一个中断源,它向断源,它向CPUCPU发出发出类型号为类型号为0 0的的中断。中断。MOV AX,12HMOV BL,0IDIV BL;除数;除数BL0,产生除法错中断,产生除法错中断MOV AX,200HMOV BL,1DIV BL;商;商200H,不能用,不能用AL表示,产生除法错中断表示,产生除法错中断41计算机接口技术计算机接口技术二、二、溢出中断溢出中断 若算法操作结果产生溢出,溢出标志若算法操作结果产生溢出,溢出标志OF为为1,则执行溢出中断指令,则执行溢出中断指令INTO时,则产生一个时,则产生一个类型号为类型号为4的内部中断,称为的内部中断,称为溢出中断溢
39、出中断。例如:例如:MOV AL,92HADD AL,8AH ;2000H7000H11CH,溢出:,溢出:OF1INTO ;因为因为OF1,产生溢出中断,产生溢出中断42计算机接口技术计算机接口技术三、三、单步中断和断点中断单步中断和断点中断 (1)(1)单步中断单步中断当当8086CPU8086CPU的标志寄存器中的的标志寄存器中的TFTF标志标志为为1 1时,时,8086CPU8086CPU处于单处于单步工作方式,这时步工作方式,这时CPUCPU在每条指令执行后自动产生在每条指令执行后自动产生类型号为类型号为l l的的中断。如中断。如DEBUGDEBUG中的跟踪命令中的跟踪命令T T,是
40、将,是将TFTF标志置标志置1 1,执行单步中,执行单步中断,跟踪程序的具体执行过程。断,跟踪程序的具体执行过程。TFTF在标志寄存器的第在标志寄存器的第8 8位。位。PUSHF PUSHF ;标志寄存器内容入栈;标志寄存器内容入栈POP AX POP AX ;将标志寄存器内容弹进;将标志寄存器内容弹进AXAXOR AXOR AX,0100H 0100H ;置;置AXAX的的D D8 8为为“1 1”,对应于,对应于TF=TF=“1 1”PUSH AX PUSH AX ;置对应于;置对应于TF=TF=“1 1”的的AXAX入栈入栈POPF POPF ;恢复标志寄存器内容;恢复标志寄存器内容IN
41、T 01 INT 01 ;单步中断;单步中断43计算机接口技术计算机接口技术(2)(2)断点中断断点中断四、四、软中断软中断软中断是由中断指令引起的。中断指令的格式为软中断是由中断指令引起的。中断指令的格式为INT nINT n,操作数,操作数n n就是中断类型号。当就是中断类型号。当CPUCPU执行完毕中断指令执行完毕中断指令INT nINT n后,就会立即产后,就会立即产生一个生一个中断类型号为中断类型号为n n的中断。的中断。从功能上来说,类似于调用子程序,但入口地址在中断向量表里。从功能上来说,类似于调用子程序,但入口地址在中断向量表里。执行执行INT 3INT 3指令产生一个指令产生
42、一个类型号为类型号为3 3的内部中断,称为的内部中断,称为断点中断断点中断,和单步中断类似,用于程序调试。和单步中断类似,用于程序调试。INT 3INT 3是是单字节指令单字节指令,可以插入程序的任何地方,插入,可以插入程序的任何地方,插入INT 3INT 3之处之处就是断点,在断点服务程序中,可显示寄存器、存储单元内容,方就是断点,在断点服务程序中,可显示寄存器、存储单元内容,方便程序员分析程序。便程序员分析程序。44计算机接口技术计算机接口技术INT n CALL FAR 4*n45计算机接口技术计算机接口技术9.4.4 9.4.4 中断概念的再讨论中断概念的再讨论一、中断与调用子程序之间
43、的关系一、中断与调用子程序之间的关系 1 1、中断过程实际上是、中断过程实际上是CPUCPU从执行当前主程序转到执行中断服务程序,从执行当前主程序转到执行中断服务程序,因此从这个角度来看,是因此从这个角度来看,是中断过程一个调用子程序的过程。中断过程一个调用子程序的过程。2 2、但中断过程与调用子程序有、但中断过程与调用子程序有很大差别很大差别。首先调用子程序的过程是一个无条件过程,程序中只要出现首先调用子程序的过程是一个无条件过程,程序中只要出现CALLCALL语句,就能实现主程序向子程序转移,但中断过程的中断服务程序的语句,就能实现主程序向子程序转移,但中断过程的中断服务程序的调用一般是有
44、条件的,当调用一般是有条件的,当CPUCPU处于开中断状态下,才能实现主程序向处于开中断状态下,才能实现主程序向中断服务程序转移。中断服务程序转移。其次调用子程序在整个程序执行中的位置是固定的。但对于硬件其次调用子程序在整个程序执行中的位置是固定的。但对于硬件中断过程,只要满足条件,在整个程序执行的任意一时间点都有可中断过程,只要满足条件,在整个程序执行的任意一时间点都有可能发生从主程序向中断服务程序的转移,也就是说硬件中断产生的能发生从主程序向中断服务程序的转移,也就是说硬件中断产生的调用过程是随机的,不可预测的。调用过程是随机的,不可预测的。46计算机接口技术计算机接口技术二、外部中断和二
45、、外部中断和INT n INT n 之间的关系之间的关系 结合中断指令结合中断指令INT nINT n,我们可以这样理解外部中断:当外部中断源,我们可以这样理解外部中断:当外部中断源发中断给发中断给CPUCPU时,如果时,如果CPUCPU满足一定的条件,处于开中断状态,满足一定的条件,处于开中断状态,CPUCPU就可以就可以响应中断,在响应中断,在CPUCPU正在执行指令与其下一个指令之间,正在执行指令与其下一个指令之间,等效等效“插入插入”了一了一个个INT nINT n指令,指令,n n是外设提供的中断类型号。是外设提供的中断类型号。注意注意“等效等效”两字表示实际过程中是不存在插入两字表
46、示实际过程中是不存在插入INT nINT n指令的操作,指令的操作,但但CPUCPU确实完成了类似确实完成了类似INT nINT n指令的功能,实现了主程序向中断服务程序指令的功能,实现了主程序向中断服务程序的转移。的转移。MOV AL,10MOV BX,100MOV BL,100ADD AL,BL4748计算机接口技术计算机接口技术8086 CPU8086 CPU中断处理流程图中断处理流程图 状态标志入栈NNN完成当前指令有内部中断吗?从指令中或内部获得中断类型号从外部获得中断类型号TEMP=1?令TEMPTF调中断服务程序YYY有NMI中断吗?有INTR中断吗?TF1?执行下一条指令NNN
47、NY中断类型号2YIF1?中断类型号1清IF、TFCS、IP入栈返回断点状态标志出栈IP、CS出栈执行中断服务程序有NMI?(1)(1)(1)(1)(2)(3)(4)(5)YY4950计算机接口技术计算机接口技术9.5.3 9.5.3 中断向量表的设置中断向量表的设置 向中断向量表中写入中断服务程序的首地址,就是中断向量表的设置。向中断向量表中写入中断服务程序的首地址,就是中断向量表的设置。一、一、用串指令用串指令 串存储指令串存储指令STOSWSTOSW,功能是将功能是将ALAL、AXAX寄存器的内容送入由寄存器的内容送入由(ES):(DI)(ES):(DI)所指向存储单元中所指向存储单元中
48、,即,即(ES):(DI)AL/AX(ES):(DI)AL/AX,只要将,只要将ESES设为设为0 0,DIDI中设为中设为 n4n4,使用,使用STOSWSTOSW指令就可完成中断服务程序首地址的写入。指令就可完成中断服务程序首地址的写入。CLICLI;关中断;关中断MOV AXMOV AX,0 0MOV ESMOV ES,AXAX;置;置ESES为为0 0MOV DIMOV DI,n*4n*4 ;置;置DIDI为为n4n4MOV AXMOV AX,OFFSET INT_VCEOFFSET INT_VCE;置中断服务程序;置中断服务程序INT_VCEINT_VCE的偏移地址到的偏移地址到AX
49、AXCLDCLD;置;置DF=“0”DF=“0”STOSWSTOSW;填偏移地址到中断向量表;填偏移地址到中断向量表MOV AXMOV AX,SEG INT_VCESEG INT_VCE ;置中断服务程序;置中断服务程序INT_VCEINT_VCE的段基地址到的段基地址到AXAXSTOSWSTOSW;填段基地址到中断向量表;填段基地址到中断向量表STISTI;开中断;开中断 51计算机接口技术计算机接口技术二、二、用伪指令用伪指令 指示语句指示语句ATAT和和ORGORG可指定存储单元的绝对地址,可指定存储单元的绝对地址,ATAT指定段地址指定段地址(16(16位位),ORGORG指定偏移地址
50、,中断向量表的段地址用指令指定偏移地址,中断向量表的段地址用指令“INTINTTBL SEGMENT AT 0TBL SEGMENT AT 0”设定,中断向量表的偏移地址用指令设定,中断向量表的偏移地址用指令“ORG n*4ORG n*4”设定,设定,n n为中断类型号,再为中断类型号,再用用DDDD伪指令伪指令将中断服务程序的首地址写入。将中断服务程序的首地址写入。INTINTTBLTBLSEGMENT AT 0 SEGMENT AT 0;定义;定义INTINTTBLTBL段,段地址为段,段地址为0 0 ORG n*4ORG n*4;指定偏移地址;指定偏移地址 DD INTDD INTVCE