《微型计算机基本原理与应用》课件第9章 中断及中断控制器.ppt

上传人(卖家):momomo 文档编号:5715987 上传时间:2023-05-05 格式:PPT 页数:142 大小:1.26MB
下载 相关 举报
《微型计算机基本原理与应用》课件第9章 中断及中断控制器.ppt_第1页
第1页 / 共142页
《微型计算机基本原理与应用》课件第9章 中断及中断控制器.ppt_第2页
第2页 / 共142页
《微型计算机基本原理与应用》课件第9章 中断及中断控制器.ppt_第3页
第3页 / 共142页
《微型计算机基本原理与应用》课件第9章 中断及中断控制器.ppt_第4页
第4页 / 共142页
《微型计算机基本原理与应用》课件第9章 中断及中断控制器.ppt_第5页
第5页 / 共142页
点击查看更多>>
资源描述

1、第第9章章 中断及中断控制器中断及中断控制器本章主要内容本章主要内容1.中断及中断处理的基本概念中断及中断处理的基本概念2.80 x86实模式中断系统实模式中断系统3.可编程中断控制器可编程中断控制器8259A9.1 基本概念基本概念9.1.1 中断的定义中断的定义n在程序运行时,系统外部、内部或现行程序本身若出在程序运行时,系统外部、内部或现行程序本身若出现紧急事件,处理器必须立即强行中止现行程序的运现紧急事件,处理器必须立即强行中止现行程序的运行,改变机器的工作状态并启动相应的程序来处理这行,改变机器的工作状态并启动相应的程序来处理这些事件,然后再恢复原来的程序运行,这一过程称为些事件,然

2、后再恢复原来的程序运行,这一过程称为中断中断。9.1.2 中断响应和处理过程中断响应和处理过程nCPU在执行每条指令的适当时刻,检测中断请求信号。在执行每条指令的适当时刻,检测中断请求信号。n若发现中断请求信号有效,对于可屏蔽中断还必须若发现中断请求信号有效,对于可屏蔽中断还必须CPU开放中断,则在下一机器周期进入中断响应周期。开放中断,则在下一机器周期进入中断响应周期。n进入中断响应周期后,中断响应和处理的过程如下:进入中断响应周期后,中断响应和处理的过程如下:1.关中断关中断 CPU在响应中断时,发出中断响应信号在响应中断时,发出中断响应信号INTA,同时内,同时内部自动地关中断,以禁止接

3、受其他的中断请求。部自动地关中断,以禁止接受其他的中断请求。2.保存断点保存断点 把断点处的指令指针把断点处的指令指针IP值和值和CS值压入堆栈,以使中断值压入堆栈,以使中断处理完后能正确地返回主程序断点。处理完后能正确地返回主程序断点。3.识别中断源识别中断源 CPU要对中断请求进行处理,必须找到相应的中断服要对中断请求进行处理,必须找到相应的中断服务程序的入口地址,这就是中断的识别。务程序的入口地址,这就是中断的识别。4.保护现场保护现场 为了不使中断服务程序的运行影响主程序的状态,必为了不使中断服务程序的运行影响主程序的状态,必须把断点处有关寄存器须把断点处有关寄存器(指在中断服务程序中

4、要使用的指在中断服务程序中要使用的寄存器寄存器)的内容以及标志寄存器的状态压入堆栈保护。的内容以及标志寄存器的状态压入堆栈保护。5.执行中断服务程序执行中断服务程序 在执行中断服务程序中,可在适当时刻重新开放中断,在执行中断服务程序中,可在适当时刻重新开放中断,以便允许响应较高优先级的中断。以便允许响应较高优先级的中断。6.恢复现场并返回恢复现场并返回 即把中断服务程序执行前压入堆栈的现场信息弹回原即把中断服务程序执行前压入堆栈的现场信息弹回原寄存器,然后执行中断返回指令,从而返回主程序继寄存器,然后执行中断返回指令,从而返回主程序继续运行。续运行。n在上述中断响应及处理的在上述中断响应及处理

5、的6项操作中,项操作中,前前3项项是中断响是中断响应过程,一般由中断系统硬件负责完成。应过程,一般由中断系统硬件负责完成。n后后3项项是中断处理过程,通常是由用户或系统程序设计是中断处理过程,通常是由用户或系统程序设计者编制的中断处理程序者编制的中断处理程序(软件软件)负责完成。负责完成。n针对一个具体的系统或机型,中断服务程序设计者应针对一个具体的系统或机型,中断服务程序设计者应该清楚该系统在中断响应时,中断响应硬件完成了哪该清楚该系统在中断响应时,中断响应硬件完成了哪些操作(如程序状态字些操作(如程序状态字PSWPSW是否已被压入堆栈),还需是否已被压入堆栈),还需中断处理软件(中断服务程

6、序)完成哪些操作。中断处理软件(中断服务程序)完成哪些操作。9.1.3 中断优先级和中断嵌套中断优先级和中断嵌套1.中断优先级中断优先级n在实际系统中,多个中断请求可能同时出现,但中断在实际系统中,多个中断请求可能同时出现,但中断系统只能按一定的次序来响应和处理,这时系统只能按一定的次序来响应和处理,这时CPU必须必须确定服务的次序,即根据中断源的重要性和实时性,确定服务的次序,即根据中断源的重要性和实时性,照顾到操作系统处理的方便,对中断源的响应次序进照顾到操作系统处理的方便,对中断源的响应次序进行确定。行确定。n这个响应次序称为中断优先级这个响应次序称为中断优先级(priority)。)。

7、n通常,可用软件查询法确定中断优先级,也可用硬件通常,可用软件查询法确定中断优先级,也可用硬件组成中断优先级编码电路来实现。组成中断优先级编码电路来实现。n现代现代PC机中多采用可编程中断控制器(如机中多采用可编程中断控制器(如8259A)来)来处理中断优先级问题。处理中断优先级问题。(1)软件查寻法确定中断优先级软件查寻法确定中断优先级n采用软件查询法解决中断优先级只需要少量硬件电路。采用软件查询法解决中断优先级只需要少量硬件电路。如图如图9.1所示,系统中有多种外部设备,将这些设备的所示,系统中有多种外部设备,将这些设备的中断请求信号相中断请求信号相“或或”,从而产生一个总的中断请求,从而

8、产生一个总的中断请求信号信号INTR发给发给CPU。图图9.1 软件查询接口电路软件查询接口电路磁磁盘盘磁磁带带CRT显示显示键键盘盘输输入入打打印印输输出出电电源源故故障障纸纸带带输输入入保保留留INTR当当CPU响应中断请求进入中断处理程序后,必须在中响应中断请求进入中断处理程序后,必须在中断处理程序的开始部分安排一段带优先级的查询程序,断处理程序的开始部分安排一段带优先级的查询程序,查询的先后顺序就体现了不同设备的中断优先级,查询的先后顺序就体现了不同设备的中断优先级,即即先查的设备具有较高的优先级,后查的设备具有较低先查的设备具有较高的优先级,后查的设备具有较低的优先级。的优先级。一般

9、来说总是先查速度较快或是实时性较高的设备。一般来说总是先查速度较快或是实时性较高的设备。软件查询的流程如图软件查询的流程如图9.2所示。所示。图图9.2 软件查询流程图软件查询流程图保护现场保护现场恢复现场恢复现场A申请服务?申请服务?B申请服务?申请服务?C申请服务?申请服务?外设外设A中断服务程序中断服务程序NNN外设外设B中断服务程序中断服务程序外设外设C中断服务程序中断服务程序YYY(2)菊花链优先级排队电路菊花链优先级排队电路 菊花链菊花链(Daisy Chain)优先级排队电路是一种优先级管优先级排队电路是一种优先级管理的简单硬件方案。它是在每个设备接口设置一个简理的简单硬件方案。

10、它是在每个设备接口设置一个简单的逻辑电路,以便根据优先级顺序来传递或截留单的逻辑电路,以便根据优先级顺序来传递或截留CPU发出的中断响应信号发出的中断响应信号INTA,以实现响应中断的优,以实现响应中断的优先顺序。先顺序。典型的菊花链优先级结构如图典型的菊花链优先级结构如图9.3(a)所示。所示。图图9.3 菊花链优先级结构菊花链优先级结构(a)菊花链排队电路菊花链排队电路中断请求中断请求CPU INTR接口接口设备设备3接口接口设备设备2接口接口设备设备1菊花链菊花链逻辑逻辑菊花链菊花链逻辑逻辑菊花链菊花链逻辑逻辑中断响应信号中断响应信号集电极开路门集电极开路门+5VINTA图图9.3 菊花

11、链优先级结构菊花链优先级结构(b)菊花链逻辑菊花链逻辑中断中断请求请求信号信号(高电平有效高电平有效)中断响应信号中断响应信号(低电平有效)(低电平有效)INTAINTR2.中断嵌套中断嵌套n当当CPU正在执行优先级较低的中断服务程序时,允许正在执行优先级较低的中断服务程序时,允许响应比它优先级高的中断请求,而将正在处理的中断响应比它优先级高的中断请求,而将正在处理的中断暂时挂起,这就是暂时挂起,这就是中断嵌套中断嵌套。n此时,此时,CPU首先为级别高的中断服务,待优先级高的首先为级别高的中断服务,待优先级高的中断服务结束后,再返回到刚才被中断的较低的那一中断服务结束后,再返回到刚才被中断的较

12、低的那一级,继续为它进行中断服务。级,继续为它进行中断服务。n如图如图9.4所示。所示。图图9.4 中断嵌套示意图中断嵌套示意图STIIRETSTIIRET.n中断嵌套的深度中断嵌套的深度(中断服务程序又被中断的层次)受(中断服务程序又被中断的层次)受到堆栈容量的限制。到堆栈容量的限制。n所以在编写中断服务程序时,必须要考虑有足够的堆所以在编写中断服务程序时,必须要考虑有足够的堆栈单元来保留多次中断的断点信息及有关寄存器的内栈单元来保留多次中断的断点信息及有关寄存器的内容。容。9.2 80 x86实模式的中断系统实模式的中断系统9.2.1 中断的分类中断的分类n中断分类的方式很多。中断分类的方

13、式很多。根据进入中断的方式可分为根据进入中断的方式可分为自愿中断和强迫中断自愿中断和强迫中断。n根据其重要性可分为根据其重要性可分为可屏蔽中断和不可屏蔽中断。可屏蔽中断和不可屏蔽中断。根据中断源的位置可分为根据中断源的位置可分为内部中断和外部中断内部中断和外部中断等等等等。n如图如图9.5所示。所示。图图9.5 80 x86实模式系统的中断分类实模式系统的中断分类INT n 指令指令中中 断断 逻逻 辑辑断点中断断点中断(INT 3)溢出中断溢出中断(INTO,OF=1)单步中断单步中断(TF=1)除法错除法错中断中断软件中断(内部中断)软件中断(内部中断)非屏蔽中断请求非屏蔽中断请求中中断断

14、控控制制器器(8259A)NMIINTRIRQ0.IRQ7可可 屏屏 蔽蔽 中中 断断 硬件中断(外部中断)硬件中断(外部中断)关于中断分类的补充说明关于中断分类的补充说明n为了支持多任务和虚拟存储器等功能,为了支持多任务和虚拟存储器等功能,80386及以上及以上CPU 把外部中断称为把外部中断称为“中断中断”(interrupt),把内部中把内部中断称为断称为“异常异常”(exception)。与。与8086一样,它也最多一样,它也最多处理处理256种中断和异常。种中断和异常。n根据引起异常的程序是否可被恢复和恢复点的不同,根据引起异常的程序是否可被恢复和恢复点的不同,又把异常分为三类:又把

15、异常分为三类:故障故障(fault)陷阱陷阱(trap)中止中止(abort)把对应的异常处理程序分别称为把对应的异常处理程序分别称为故障处理程序、陷阱故障处理程序、陷阱处理程序和中止处理程序。处理程序和中止处理程序。n故障故障是在引起异常的指令之前,把异常通知给系统的是在引起异常的指令之前,把异常通知给系统的一种异常。故障的特点是可以排除的。一种异常。故障的特点是可以排除的。例如,在执行一条指令时,如果发现它要访问的段不例如,在执行一条指令时,如果发现它要访问的段不在内存中,那么停止该指令的执行,并产生一个段不在内存中,那么停止该指令的执行,并产生一个段不存在异常,对应的故障处理程序可通过从

16、外存加载该存在异常,对应的故障处理程序可通过从外存加载该段到内存的方法来排除故障。之后,原引起异常的指段到内存的方法来排除故障。之后,原引起异常的指令就可以继续执行,就不再产生异常。令就可以继续执行,就不再产生异常。陷阱陷阱是在引起异常的指令执行之后触发的一种异常。是在引起异常的指令执行之后触发的一种异常。在转入异常处理程序时,引起陷阱的指令已完成。陷在转入异常处理程序时,引起陷阱的指令已完成。陷阱处理程序执行完,返回到引起陷阱指令的下一条指阱处理程序执行完,返回到引起陷阱指令的下一条指令。令。软中断指令软中断指令INT n 是陷阱的例子。是陷阱的例子。中止中止是在系统出现严重的不可恢复的事件

17、时触发的一是在系统出现严重的不可恢复的事件时触发的一种异常。产生中止后,正执行的程序不能恢复执行,种异常。产生中止后,正执行的程序不能恢复执行,系统要重新启动才能恢复正常运行状态。系统要重新启动才能恢复正常运行状态。9.2.2 中断向量表中断向量表n所谓所谓中断向量(中断向量(interrupt vector),实际上就是,实际上就是中断服中断服务程序的入口地址务程序的入口地址,每个中断类型对应一个中断向量。,每个中断类型对应一个中断向量。n每个中断向量占每个中断向量占4字节的存储单元。字节的存储单元。其中其中:n前两个字节单元存放中断服务程序入口地址的偏移量前两个字节单元存放中断服务程序入口

18、地址的偏移量(IP),低字节在前,高字节在后;,低字节在前,高字节在后;n后两个字节单元存放中断服务程序入口地址的段基值后两个字节单元存放中断服务程序入口地址的段基值(CS),也是低字节在前,高字节在后。,也是低字节在前,高字节在后。n80 x86实模式系统允许引入的中断可达实模式系统允许引入的中断可达256个,因此需个,因此需占用占用1K字节的存储空间来存放这字节的存储空间来存放这256个中断服务程序个中断服务程序入口地址。入口地址。n80 x86实模式系统把中断服务程序入口地址信息设置在实模式系统把中断服务程序入口地址信息设置在存储器的最低端,即从存储器的最低端,即从00000H003FF

19、H的的1K字节存字节存储空间中。储空间中。n这一存储空间就叫这一存储空间就叫中断向量表,中断向量表,如图如图9.6所示。所示。图图9.6 实模式系统的中断向量表实模式系统的中断向量表CSIPCSIPCSIPCSIPCSIPCSIPCSIP类型类型255(十进制)(十进制)类型类型32类型类型31(十进制)(十进制)供用户定义的中断供用户定义的中断(共(共224个)个)类型类型5类型类型4类型类型3类型类型2类型类型1类型类型0保留的中断保留的中断(共(共27个)个)专用的中断专用的中断(共(共5个)个)0000:03FFH0000:007FH0000:007EH 0000:0014H0000:

20、0013H0000:0010H0000:000FH0000:000CH0000:000BH0000:0008H0000:0007H0000:0004H0000:0003H0000:0000H溢出中断溢出中断断点中断断点中断非屏蔽中断非屏蔽中断单步中断单步中断除数为除数为0中断中断n在中断向量表中,各中断向量按中断类型码从在中断向量表中,各中断向量按中断类型码从0 0到到255255顺序存放。这样,知道了中断类型码,很快就可算出顺序存放。这样,知道了中断类型码,很快就可算出相应中断向量的存放位置,从而取出中断向量相应中断向量的存放位置,从而取出中断向量。n例如,中断类型码为例如,中断类型码为27

21、H的中断所对应的中断向量应的中断所对应的中断向量应存放在从存放在从0000H:009CH开始的开始的4个连续字节单元中。个连续字节单元中。n如果相应存储单元的内容如图如果相应存储单元的内容如图9.7所示,那么所示,那么27H号中号中断的中断服务程序的入口地址即为断的中断服务程序的入口地址即为8765H:4321H。图图9.7 中断向量的存放格式中断向量的存放格式87H65H43H21H0000:009FH0000:009CHn由于中断向量在中断向量表中是按中断类型码(也称中由于中断向量在中断向量表中是按中断类型码(也称中断向量号)顺序存放的,所以每个中断向量的地址可由断向量号)顺序存放的,所以

22、每个中断向量的地址可由中断类型码乘以中断类型码乘以4 4计算出来。计算出来。nCPU响应中断时,只要把中断类型码响应中断时,只要把中断类型码N左移左移2位(乘以位(乘以4),即可得到中断向量在中断向量表中的对应地址),即可得到中断向量在中断向量表中的对应地址4N(该中断向量所占该中断向量所占4个字节单元的第一个字节单元的地个字节单元的第一个字节单元的地址址)。n然后把由此地址开始的两个低字节单元的内容装入然后把由此地址开始的两个低字节单元的内容装入IP寄寄存器:存器:IP (4N,4N+1)n再把两个高字节单元的内容装入再把两个高字节单元的内容装入 CS 寄存器寄存器:CS(4N+2,4N+3

23、)n这就是使程序转入中断类型码为这就是使程序转入中断类型码为N的中断服务程序的的中断服务程序的控制过程,如下面例控制过程,如下面例1所示。所示。n至于中断类型码至于中断类型码N的来源,对于不同的中断类型(内的来源,对于不同的中断类型(内部中断、外部中断),情况有所不同,详见后述。部中断、外部中断),情况有所不同,详见后述。例例9.1 若中断类型码为若中断类型码为3,则由中断类型码取得中断服务,则由中断类型码取得中断服务入口地址的过程如图入口地址的过程如图9.8所示。所示。图图9.8 根据中断类型码取得中断服务程序入口地址根据中断类型码取得中断服务程序入口地址OOH(IPL)0AH(IPH)00

24、H(CSL)1EH(CSH)中断服务程序中断服务程序00000H00001H0000CH(0000:000CH)1EA00H(1E00:0A00H)FFFFFH高地址高地址低地址低地址34000CH(中断向量地址)(中断向量地址)例例9.2 中断类型码为中断类型码为20H,则中断服务程序的入口地址存,则中断服务程序的入口地址存放在中断向量表从放在中断向量表从0000:0080H开始的开始的4个字节单元中。个字节单元中。若这若这4个字节单元的内容分别为:个字节单元的内容分别为:n(0000:0080H)=10Hn(0000:0081H)=20Hn(0000:0082H)=30Hn(0000:00

25、83H)=40H试指出相应的中断服务程序的入口地址。试指出相应的中断服务程序的入口地址。解解:中断服务程序的入口地址为中断服务程序的入口地址为 。n例例9.3 中断类型码为中断类型码为17H,若中断服务程序的入口地,若中断服务程序的入口地址为址为2340H:7890H,试指出中断向量表中存放该中断,试指出中断向量表中存放该中断向量的向量的4个字节单元的地址及内容。个字节单元的地址及内容。解解:由于中断类型码为由于中断类型码为17H,所以中断向量表中存放相,所以中断向量表中存放相应中断向量的应中断向量的4个字节单元的地址分别为个字节单元的地址分别为0000:005CH、0000:005DH、00

26、00:005EH、0000:005FH,4个字节单个字节单元的内容分别为元的内容分别为 。9.2.3 外部中断外部中断由外部的中断请求信号启动的中断,称为外部中断由外部的中断请求信号启动的中断,称为外部中断,也也称硬件中断。称硬件中断。80 x86 CPU80 x86 CPU为外部中断提供两条引线,即为外部中断提供两条引线,即NMINMI和和INTRINTR,用来输入中断请求信号用来输入中断请求信号。1.非屏蔽中断非屏蔽中断 从从NMI引脚进入的中断为非屏蔽中断,它不受中断允引脚进入的中断为非屏蔽中断,它不受中断允许标志许标志IF的影响。的影响。非屏蔽中断的类型码为非屏蔽中断的类型码为2,因此

27、,非屏蔽中断处理子程,因此,非屏蔽中断处理子程序的入口地址存放在序的入口地址存放在08H、09H、0AH和和0BH这这4个字个字节单元中节单元中。2.可屏蔽中断可屏蔽中断n一般外部设备请求的中断都是从一般外部设备请求的中断都是从CPU的的INTR端引入的端引入的可屏蔽中断。可屏蔽中断。n当当CPU接收到一个可屏蔽中断请求时,如果中断允许接收到一个可屏蔽中断请求时,如果中断允许标志标志IF为为1,那么,那么CPU就会在执行完当前指令后响应这就会在执行完当前指令后响应这一中断请求。一中断请求。n下面以下面以8086系统为例,具体介绍一下可屏蔽中断的响系统为例,具体介绍一下可屏蔽中断的响应时序。应时

28、序。图图9.9 8086的中断响应总线周期的中断响应总线周期T1 T2 T3 T4 TI TI TI T1 T2 T3 T4第一个总线周期第一个总线周期第二个总线周期第二个总线周期三个空闲状态三个空闲状态中断类型码中断类型码CLK_INTAAD7AD09.2.4 内部中断内部中断内部中断也称软件中断。内部中断也称软件中断。它是由于它是由于CPU执行了执行了INT n(含含INT 3)、INTO指令,或指令,或者由于除法出错以及进行单步操作所引起的中断,主者由于除法出错以及进行单步操作所引起的中断,主要包括要包括INT n指令中断、断点中断、溢出中断、除法错指令中断、断点中断、溢出中断、除法错中

29、断以及单步中断。中断以及单步中断。(1)INT n 指令中断。指令中断。n80 x86系统提供了直接调用中断处理子程序的手段,这系统提供了直接调用中断处理子程序的手段,这就是中断指令就是中断指令INT n。n指令中的中断类型码指令中的中断类型码n告诉告诉CPU调用哪个中断处理子程调用哪个中断处理子程序。序。(2)除法错中断(类型除法错中断(类型0)n在执行除法指令在执行除法指令DIV 或或IDIV 后,若所得的商超出了目后,若所得的商超出了目标寄存器所能表示的范围,比如用数值标寄存器所能表示的范围,比如用数值0作除数,则作除数,则CPU立即产生一个立即产生一个0型中断型中断。(3)溢出中断(类

30、型溢出中断(类型4)若上一条指令执行的结果使溢出标志位若上一条指令执行的结果使溢出标志位OF置置1,则紧,则紧接着执行接着执行INTO指令时,将引起类型为指令时,将引起类型为4的内部中断,的内部中断,CPU将转入溢出错误处理。将转入溢出错误处理。若若OF=0时,则时,则INTO指令执行空操作,即指令执行空操作,即INTO指令不指令不起作用。起作用。INTO指令通常安排在算术运算指令之后,以便在发指令通常安排在算术运算指令之后,以便在发生溢出时能及时处理。生溢出时能及时处理。典型情况如表典型情况如表9-1所示。所示。表表 9-1 溢出中断的相应和处理溢出中断的相应和处理主程序主程序中断服务程序中

31、断服务程序 OVERFLOW:PUSH AX PUSH BX PUSH CX PUSH DXADD AX,BX;若若OF=1溢出处理溢出处理 INTO (包括输出某些提示信息)(包括输出某些提示信息)POP DXPOP CXPOP BXPOP AX IRET .(4)单步中断(类型单步中断(类型1)n当把当把CPU标志寄存器的标志寄存器的TF位置为位置为1以后,以后,CPU便处于便处于单步工作方式。单步工作方式。n在单步工作方式下,在单步工作方式下,CPU每执行完一条指令,就会自每执行完一条指令,就会自动产生一个动产生一个1 型中断,进入型中断,进入1型中断处理程序。型中断处理程序。n此处理程

32、序显示此处理程序显示CPU内部各寄存器的内容并告知某些内部各寄存器的内容并告知某些附带的信息。附带的信息。(5)断点中断断点中断(类型类型3)与单步中断类似,断点中断也是一种调试程序的手段,与单步中断类似,断点中断也是一种调试程序的手段,并且常常和单步中断结合使用。并且常常和单步中断结合使用。对一个大的程序,不可能对整个程序全部用单步方式对一个大的程序,不可能对整个程序全部用单步方式来调试,而只能先将程序中的某一错误确定在程序中来调试,而只能先将程序中的某一错误确定在程序中的一小段中,再对这一小段程序用单步方式跟踪调试。的一小段中,再对这一小段程序用单步方式跟踪调试。断点中断就是用来达到这个目

33、的的。断点中断就是用来达到这个目的的。n在所有在所有INT nINT n形式的指令中,只有断点中断指令形式的指令中,只有断点中断指令INT 3INT 3是一条单字节长的指令,其他中断指令都是两字节指是一条单字节长的指令,其他中断指令都是两字节指令。令。图图9.10 断点的设置断点的设置ADD AL,BLJMP 201HINC ALCMP AL,0FFHJL 200H不转移不转移转移转移断点断点1FCH,1FDH1FEH,1FFH200H201H,202H203H,204H内部中断的特点是:内部中断的特点是:(1)中断类型码由中断类型码由CPU内部自动提供(含从内部自动提供(含从INT n指令中

34、指令中自动提取),不需要执行中断响应总线周期(自动提取),不需要执行中断响应总线周期(INTA总总线周期)去读取中断类型码。线周期)去读取中断类型码。(2)除单步中断外,所有内部中断都不可以用软件的方法除单步中断外,所有内部中断都不可以用软件的方法来禁止(屏蔽)。单步中断可以通过软件将来禁止(屏蔽)。单步中断可以通过软件将TF标志置标志置1或清或清0来予以允许或禁止。来予以允许或禁止。(3)除单步中断外,所有内部中断的优先级都比外部中断除单步中断外,所有内部中断的优先级都比外部中断高。高。9.2.5 中断响应和中断处理过程中断响应和中断处理过程1.可屏蔽中断的响应和处理过程可屏蔽中断的响应和处

35、理过程n图图9.11给出了可屏蔽中断从中断请求信号产生到中断给出了可屏蔽中断从中断请求信号产生到中断服务程序结束并返回被中断程序的全过程。服务程序结束并返回被中断程序的全过程。图图9.11 可屏蔽中断全过程可屏蔽中断全过程 INTR _ INTAIPCSPSW(FR)中断类型码寄存器中断类型码寄存器 CPU完成现行指令,完成现行指令,发出中断响应信号发出中断响应信号 INTA Q中断中断请求请求中断中断屏蔽屏蔽 接口发中断请求信号接口发中断请求信号INTR CPU读取中断类型码读取中断类型码N新的(新的(IP)新的(新的(CS)旧的(旧的(IP)旧的(旧的(CS)旧的(旧的(PSW)被中断被中

36、断的程序的程序.STI.IRET中断服务程序中断服务程序.存储器存储器中断向量表中断向量表16位位4N4N+2清除清除IF和和TF 转入转入中断服务中断服务程序程序 返回被中返回被中断的程序断的程序开放中断开放中断(可选)(可选)现行现行PSW、CS、IP压栈压栈 IRET指令使指令使旧的旧的IP、CS、PSW弹出堆栈弹出堆栈CPU外设接口外设接口Q取取CS、IP新值新值n判断与思考:判断与思考:若在主程序中已使若在主程序中已使IF=1IF=1(开中),则在响应中断请(开中),则在响应中断请求并执行完中断服务程序返回主程序后,求并执行完中断服务程序返回主程序后,IF IF 标志位是标志位是否为

37、否为1 1决定于在中断服务程序中是否执行了决定于在中断服务程序中是否执行了STISTI指令。指令。2.80 x86 实模式中断响应和中断处理过程实模式中断响应和中断处理过程 80 x86实模式中断响应和处理流程如图实模式中断响应和处理流程如图9.12所示。所示。图图9.12 80 x86实模式中断响应和中断处理过程实模式中断响应和中断处理过程中断中断优先级优先级除法错,除法错,INT n,INTO最高最高NMIINTR单步单步最低最低80 x86实模式中断优先级实模式中断优先级结束当前指令结束当前指令除法错,除法错,INTO,INT n?NMIINTR?TF=1?执行下一条指令执行下一条指令N

38、NNNIF=1?NYYYYY内部自动形成中断类型码内部自动形成中断类型码N读中断类型码读中断类型码N标志压入堆栈标志压入堆栈令令TEMPTF清除清除IF和和TFCS和和IP压入堆栈压入堆栈(4N,4N+1)IP(4N+2,4N+3)CS执行中断处理程序执行中断处理程序IP、CS出栈出栈标志寄存器出栈返回被中断的主程序有有NMI?TEMP=1?YYNN执行执行IRET指令指令需要说明的是,在图需要说明的是,在图9.12所示的中断响应和处理过程所示的中断响应和处理过程中,其中的中,其中的步步(含含)是由处理器内部的中断系是由处理器内部的中断系统硬件自动完成的统硬件自动完成的,即无需程序员的直接控制

39、和干预;,即无需程序员的直接控制和干预;其后的中断处理过程则是通过执行中断服务程序(软其后的中断处理过程则是通过执行中断服务程序(软件)来完成的。件)来完成的。9.3 可编程中断控制器可编程中断控制器8259A(8259A Programmable Interrupt Controller-PIC)Intel 8259A用于管理和控制用于管理和控制80 x86的外部中断请求,的外部中断请求,实现优先级判决,提供中断类型码,屏蔽中断输入等功实现优先级判决,提供中断类型码,屏蔽中断输入等功能。能。使用使用单片单片8259A可以管理可以管理8级中断,采用级中断,采用级联级联方式,可方式,可扩充到扩充

40、到64级(用级(用9片片8259A)。)。9.3.1 8259A的引脚功能的引脚功能n封装形式28脚双列直插(28pin DIP),DIP:Dual-In-line Package,如图9.13所示。123456789101112131428272625242322212019181716158259ACS WR RDD7D6D4D5D2D3D0D1CAS0CAS1GNDINTAIR7IR6IR4IR5IR2IR3IR0IR1INTCAS2 SP/ENVCCA0n 片选信号(片选信号(Chip Select)低电平有效,来自地址低电平有效,来自地址译码器的输出只有译码器的输出只有有效时,有效时

41、,CPU才能对才能对8259A进行进行读写操作。读写操作。n 写信号,低电平有效,来自写信号,低电平有效,来自CPU的输出;当有的输出;当有效且有效时,效且有效时,使使8259A接受接受CPU送来的命令字。送来的命令字。n 读信号,低电平有效,来自读信号,低电平有效,来自CPU的的 输出;当输出;当有效且有效且 有效时,使有效时,使8259A将状态信息放到数据总路线将状态信息放到数据总路线上,供上,供CPU检测。检测。CSWRCSCSCSRDRDWRWR RDnD7 D0:双向数据总线,接到系统数据总线的双向数据总线,接到系统数据总线的D7 D0 上,上,用来传送控制字、状态字和中断类型号。用

42、来传送控制字、状态字和中断类型号。nIR7IR0:中断请求信号,输入,来自外部接口电路。中断请求信号,输入,来自外部接口电路。(单片时)(单片时)nINT:向:向CPU发出的中断请求信号。(单片时)。发出的中断请求信号。(单片时)。nINTA:中断响应信号,由此接收:中断响应信号,由此接收CPU发来的中断响应发来的中断响应脉冲。脉冲。nA0:地址输入信号,用于对地址输入信号,用于对8259A内部寄存器的寻址。内部寄存器的寻址。nCAS2 CAS0:级联线(级联线(CASCADELINES),传送),传送3位位标识码标识码,用于区分特定的从控制器。双向:对于主片为,用于区分特定的从控制器。双向:

43、对于主片为输出,对于从片为输入。输出,对于从片为输入。n:从片从片/允许缓冲器信号。双功能引脚:允许缓冲器信号。双功能引脚:n作为输入时,作为输入时,8259A作为主片(作为主片(1)8259A作为从片(作为从片(0)n作为输出时,用来启动(允许)数据总线收发器(如作为输出时,用来启动(允许)数据总线收发器(如8286)。)。*究竟是作为输入还是输出,取决于究竟是作为输入还是输出,取决于8259A是否工作于是否工作于“缓冲方缓冲方式式”(即(即8259A是否通过一个是否通过一个“数据总线收发器数据总线收发器”与系统总线相与系统总线相连)。详见后面连)。详见后面ICW4的格式。的格式。SP/EN

44、SP/ENSP/EN9.3.2 8259A的内部结构的内部结构n8259A的内部逻辑结构如图的内部逻辑结构如图9.14所示。所示。图图9.14 8259A的内部逻辑结构的内部逻辑结构数据总线数据总线缓冲器缓冲器读读/写写控制电路控制电路级级 连连缓冲器缓冲器/比较器比较器中断服务中断服务寄存器寄存器(ISR)中断请求中断请求寄存器寄存器(IRR)优先权优先权判别器判别器(PR)中断屏蔽寄存器中断屏蔽寄存器(IMR)控制电路控制电路 SP/EN。IR0IR1IR2IR6IR7内部总线内部总线CAS0CAS1CAS2_ INTA INT WR RDCSA0D7D0 CPUAD7AD0INTAINT

45、RSP/ENISRICW1 OCW1 (IMR)ICW2OCW2ICW3OCW3ICW4PRIRRD7D0地址地址译码译码.INTINTACSRDWRA0CAS0CAS1CAS2.IR7IR0 8259A的编程结构的编程结构nIRRInterrupt Request RegisternPR-Priority ResolvernISR-In-Service RegisternIMR-Interrupt Mask RegisternICWs-Initialization Command WordsnOCWs-Operation Command Wordsn7个个CPU可访问的寄存器,分两组:可访问

46、的寄存器,分两组:n初始化命令字初始化命令字ICW1 ICW4-系统初启时设定。系统初启时设定。n操作命令字操作命令字OCW1OCW3系统运行时,由应用程序设定系统运行时,由应用程序设定(实现对实现对中断处理的动态管理和控制中断处理的动态管理和控制).The OCWs can be written into the 8259A anytime after initialization.(手册手册P6P7)。)。7个寄存器的寻址问题个寄存器的寻址问题:n规规定:A0 0111ICW1:用偶地址写入,且用偶地址写入,且D4=1ICW2ICW3ICW4紧接着紧接着ICW1,用奇地址写,用奇地址写入入

47、100OCW1:也用奇地址写入,但不紧跟ICW1OCW2OCW3也用偶地址写入,但也用偶地址写入,但D4=0即:01 0 0 0 1D4D3ICW1OCW2OCW300采用了专门的采用了专门的“标识标识位位”,以节省输入地,以节省输入地址的引脚数址的引脚数(仅用了仅用了A0)n8259A的处理部件:n中断请求寄存器中断请求寄存器IRR8位寄存器控制逻辑位寄存器控制逻辑作用:作用:接受并锁存来自接受并锁存来自IR0IR7的中断请求信号。的中断请求信号。n中断服务寄存器中断服务寄存器ISR作用:作用:保存当前正在处理的中断请求。保存当前正在处理的中断请求。n优先级裁决器优先级裁决器PR作用:作用:

48、把新进入的中断请求和当前正在处理的中断把新进入的中断请求和当前正在处理的中断进行比较,以决定哪一个优先级更高。进行比较,以决定哪一个优先级更高。9.3.3 8259A的工作过程的工作过程nIR0IR7上出现某一中断请求信号上出现某一中断请求信号-IRR对应位被置对应位被置“1”-由由IMR的相应位决定是否将其屏蔽的相应位决定是否将其屏蔽(屏蔽位屏蔽位=1,不通过;屏蔽位不通过;屏蔽位=0,通过,通过)-中断请求进中断请求进PR-PR把新把新进入的中断请求和当前正在处理的中断进行优先级比进入的中断请求和当前正在处理的中断进行优先级比较较-若新进入的中断优先级高,该中断请求被送到若新进入的中断优先

49、级高,该中断请求被送到CPU。n若若CPU的的IF=1,CPU完成当前指令后,响应中断,在完成当前指令后,响应中断,在 引脚上发出两个负脉冲引脚上发出两个负脉冲(执行两个中断响应总线执行两个中断响应总线周期周期),在第在第2个中断响应总线周期,个中断响应总线周期,8259A送出中断类送出中断类型码型码N。INTAT1 T2 T3 T4 TI TI TI T1 T2 T3 T4第一个总线周期第一个总线周期第二个总线周期第二个总线周期三个空闲状态三个空闲状态中断类型码中断类型码CLK_INTAAD7AD0 8259A收到第一个负脉冲后:收到第一个负脉冲后:n使使IRR锁存允许,不予接受锁存允许,不

50、予接受IR0IR7上的中断请求上的中断请求信号;直到第二个负脉冲结束后,才又使信号;直到第二个负脉冲结束后,才又使IRR锁锁存禁止存禁止(输入输出透明输入输出透明)。n使使ISR的相应位置的相应位置“1”,以便为优先级裁决器以后,以便为优先级裁决器以后的裁决提供依据。的裁决提供依据。n清除清除IRR的相应位。的相应位。8259A收到第二个负脉冲后:收到第二个负脉冲后:n把中断类型码寄存器的内容把中断类型码寄存器的内容(ICW2的内容的内容)送到送到D7D0n如果如果ICW4的的AEOI位为位为1,则在第二个,则在第二个 脉冲结束时,将脉冲结束时,将ISR中被第一个中被第一个 脉冲置脉冲置“1”

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(《微型计算机基本原理与应用》课件第9章 中断及中断控制器.ppt)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|