收藏 分享(赏)

第7讲 中断(2011).ppt

上传人:知足长乐 文档编号:1225639 上传时间:2018-06-19 格式:PPT 页数:75 大小:1.37MB
下载 相关 举报
第7讲 中断(2011).ppt_第1页
第1页 / 共75页
第7讲 中断(2011).ppt_第2页
第2页 / 共75页
第7讲 中断(2011).ppt_第3页
第3页 / 共75页
第7讲 中断(2011).ppt_第4页
第4页 / 共75页
第7讲 中断(2011).ppt_第5页
第5页 / 共75页
点击查看更多>>
资源描述

1、第 7 章,第7章 中断,教学重点 中断系统 8086 CPU中断系统 中断控制器Intel8259A 中断服务程序,7.1 中断系统,7.1.1 中断的概念及其作用 1、中断的概念 2、中断系统的作用,1)能实现并行处理 2)能实现实时处理 3)能实现故障处理,7.1.2 中断处理系统,1、中断源识别 2、中断优先级判断 3、中断嵌套管理 4、中断处理过程,1、中断源识别,中断技术单线中断 软件查询中断源提供中断地址信息多线中断 由于CPU引脚线有限而只能管理少量的中断源向量中断 不需要查询中断源,由每个中断源经接口电路向CPU提供中断源的设备标志码,CPU将程序转向相应中断设备的中断处理程

2、序,中断处理速度较快。,2、中断优先级判断,1) 软件查询方式2)硬件排队方式3)专用中断控制器方式 中断控制器包括下列部件: 中断优先权管理电路、中断请求锁存器、中断类型寄存器、 当前中断服务寄存器以及中断屏蔽寄存器等。,1)软件查询方式,图7-3 软件查询接口电路,优点:接口电路简单,且优先权次序可以按查询的先后顺序而改变。缺点:中断源较多时,由查询转到相应中断服务程序的时间较长。应用:用于中断源较少、实时性要求不高的场合。,2)硬件排队方式,常用的有中断优先权编码电路和链式优先权排队电路 优点:缩短中断优先级判断时间 功能:决定优先级,产生中断请求信号外,并提供相应的中断向量,3、中断嵌

3、套管理,注:中断嵌套的深度受堆栈容量的限制,必须有足够的堆栈单元来保存多重中断的断点和寄存器的内容,4中断处理过程,7.2 8086CPU中断系统,8086的中断系统采用向量中断机制能够处理256个中断用中断向量号0255区别可屏蔽中断还需要借助专用中断控制器Intel 8259A实现优先权管理,1.8086的中断类型,内部中断除法错中断(0)单步中断(1)断点中断(3)溢出中断(4)指令中断(n)外部中断非屏蔽中断(2)可屏蔽中断,(1) 内部中断,内部中断是由于8088内部执行程序出现异常引起的程序中断除法错中断:向量号为0指令中断:向量号为n断点中断:向量号为3溢出中断:向量号为4单步中

4、断:向量号为1,内部中断的中断向量号已定,除法错中断,在执行除法指令时,若除数为0或商超过了寄存器所能表达的范围,则产生一个向量号为0的内部中断,称为除法错中断。例如:,mov bl,0idiv bl;除数BL0,产生除法错中断,mov ax,200hmov bl,1div bl;商200H,不能用AL表达;产生除法错中断,指令中断,在执行中断调用指令INT n时产生的一个向量号为n(0 255)的内部中断,称为指令中断。其中向量号为3的指令中断比较特别(生成一个字节的指令代码:11001100),常用于程序调试,被称为断点中断。,例如:DEBUG.EXE调试程序的运行命令G设置的断点,就是利

5、用INT 3指令实现的,溢出中断,在执行溢出中断指令INTO时,若溢出标志OF为1,则产生一个向量号为4的内部中断,被称为溢出中断。例如:,mov ax,2000hadd ax, 7000h;2000H7000H9000H,溢出:OF1into;因为OF1,所以产生溢出中断,单步中断,若单步中断TF为1,则在每条指令执行结束后产生一个向量号为1的内部中断,称为单步中断。执行单步 中断服务程序可跟踪程序的具体执行过程,实现程序的调试。,例如:DEBUG.EXE调试程序的单步命令T就利用单步中断实现对程序的单步调试,(2) 外部中断,外部中断是由于8088外部提出中断请求引起的程序中断。非屏蔽中断

6、:向量号为2NMI上升沿触发有效。外部通过非屏蔽中断NMI请求,不受中断允许标志IF的限制,必须响应非屏蔽中断主要用于处理系统的意外或故障可屏蔽中断:向量号来自中断控制器INTR高电平触发有效受中断允许标志IF的限制,其中断类型码由接口电路提供。可屏蔽中断主要用于与外设交换数据,IF控制可屏蔽中断的响应,中断标志IF的状态,IF0:可屏蔽中断不会被响应关中断、禁止中断、中断屏蔽系统复位,使IF0任何一个中断被响应,使IF0执行指令CLI,使IF0IF1:可屏蔽中断会被响应开中断、允许中断、中断开放执行指令STI,使IF1执行指令IRET恢复原IF状态,明确IF标志的状态是关键,查询中断的顺序,

7、决定了各种中断源的优先权软件中断除法错中断指令中断溢出中断非屏蔽中断可屏蔽中断单步中断,2. 中断源优先级,7.2.2 8086CPU的中断响应过程,中断请求 中断判优 中断响应 中断服务 中断返回,1. 中断请求 信号形式应满足CPU要求。 中断请求信号应被有效地记录,以便CPU能够检测到它。 一旦CPU对某中断源的请求提供了服务,则该中断源的请求信号应及时撤消。注:可屏蔽中断源向CPU发中断请求信号的条件: 1)设置中断请求触发器 2)设置中断屏蔽触发器,查询中断的顺序,决定了各种中断源的优先权软件中断除法错中断指令中断溢出中断非屏蔽中断可屏蔽中断单步中断,2. 中断判优,3. 中断响应,

8、CPU对内部中断源提出的中断请求必须接受,而对外部中断源提出的中断请求是否响应取决于外中断源类型及响应条件。 不同的微机对可屏蔽中断请求有不同的响应条件,8086(88)系统的响应条件为: 指令执行结束; CPU处于开中断状态(即IF=1); 没有发生复位(RESET)、保持(HOLD)和非屏蔽中断请求(NMI); 开中断指令(STI)、中断返回指令(IRET)执行完,需要再执行一条指令,才能响应INTR请求。,4. 中断服务,1)保护各标志位状态和屏蔽INTR中断和单步中断 把CPU的标志寄存器内容压入堆栈(PUSHF),并清除IF标志和TF标志(IF=0,TF=0)。 2)保存断点 把断点

9、处的IP和CS内容压入堆栈,先压人CS内容,再压入IP内容。3)执行中断服务程序 从中断向量表中取出中断服务程序的入口地址,分别送至CS和IP中,按CS和IP中的地址执行中断服务程序。在中断服务程序中,首先要保护现场,然后进行中断服务,服务完毕恢复现场,最后执行中断返回指令IRET。,执行中断服务程序的IRET指令,按次序恢复断点处的IP和CS值,恢复标志寄存器内容。,5. 中断返回,执行当前指令,N,Y,N,N,N,N,N,自动形成中断类型码0,从指令中取出中断类型码n若是断点形成中断类型码3,自动形成中断类型码4,响应中断读取中断类型码,自动形成中断类型码2,自动形成中断类型码1,Y,Y,

10、Y,Y,Y,Y,N,Y,N,PSW、CS、IP依次入栈并清除IF和TF标志位,由中断类型码形成中断服务程序的入口、并执行中断服务程序,IP、CS、PSW依次出栈,取下一条指令,图7-98086系统中断响应过程的流程,答: 系统采用“向量中断”的方式处理中断请求,即CPU 根据中断类型号产生中断源的服务程序的入口地址。,8086系统可以处理256种中断源,每种中断都有其对应的中断服务程序,对于256个不同的中断源,系统如何正确找到该中断源的中断服务程序呢?,7.2.3 中断向量表,每个中断向量占4字节(双字)单元,低地址字单元存放中断服务程序的入口地址偏移量(IP),高地址字单元存放中断服务程序

11、入口地址的段基址(CS),图2 中断向量结构,中断服务子程序的入口地址,也就是中断服务子程序的第一条指令在存储器中的存放地址,即中断向量。,8086可以处理256个中断源,每个中断源都有其对应的中断服务程序, 所以系统共有256个指向中断服务程序入口的中断向量,将这些中断向量按一定的规律排列成一个表,存放在内存最低的1KB中(地址范围000H3FFH),这张表称为“中断向量表,当中断源发出中断请求时,即可查找该表,找出其中断向量,就可转入相应的中断服务子程序。,中断向量表,中断类型码的获取?,获得中断类型码后,如何进入中断服务程序?,中断响应与处理,中断类型码 N,中断向量地址,中断向量(中断

12、服务程 序入口地址),4,查中断向量表,中断源,相应的中断服务程序,例:中断类型号为68H的中断操作过程。,INT 68HMOV AX,0,向量地址=68H4=1A0H,2050H,A000H,IPCS,STI PUSH DS . . . IRET,中断处理程序,A000H:2050H,例2 某中断源的类型号为34,且已知部分中断向量表如图5所示,试求中断服务程序入口的物理地址。,解:34*4=136即中断向量地址为:88H查中断向量表:得中断向量为: CS:IP=A123H:B678H中断服务程序入口的物理地址为: CS*10H+IP= A123H*10H+ B678H = AC8A8H,图

13、5 部分中断向量表,IP,CS,课后思考?,如何激活中断?,中断机制如何?,例2某中断源的类型号为54H,中断服务程序入口的符号地址为INTADD,试编一段程序设置该中断类型号的中断向量。,解:1)直接传送 MOV AX,0 MOV DS,AX ;中断向量表的段地址为0000H MOV BX,54H*4;取中断向量地址 MOV AX,OFFSET INTADD;取中断向量地址并 ;送入中断向量表 MOV BX,AX MOVAX,SEGINTADD MOV BX2,AX,7.2.4 内部中断服务程序,编写内部中断服务程序与编写子程序类似利用过程定义伪指令PROC/ENDP允许嵌套,第1条指令通常

14、为开中断指令STI保护现场,执行中断服务,恢复现场,最后用中断返回指令IRET注意:1)通常采用存储器传递参数 2)确保堆栈有足够的空间,防止溢出主程序需要调用中断服务程序调用前,需要设置中断向量,开中断,STI。利用INT n指令调用中断服务程序,7.3 8259A中断控制器,Intel 8259A是可编程中断控制器PIC可用于管理Intel 8080/8085、8086/8088、80286/80386的可屏蔽中断8259A的基本功能一片8259A可以管理8级中断,可扩展至64级每一级中断都可单独被屏蔽或允许在中断响应周期,可提供相应的中断向量号可以通过编程来选择8259A的各种工作方式及

15、任意设定中断类型号 。,7.3.1 8259A的内部结构,8259A 内部结构,中断请求寄存器IRR保存8条外界中断请求信号IR0IR7的请求状态Di位为1表示IRi引脚有中断请求;为0表示无请求中断服务寄存器ISR保存正在被8259A服务着的中断状态Di位为1表示IRi中断正在服务中;为0表示没有被服务中断屏蔽寄存器IMR保存对中断请求信号IR的屏蔽状态Di位为1表示IRi中断被屏蔽(禁止);为0表示允许,级连缓冲/比较器,可用与控制多片8259A级连,使得中断级可以扩展,最多至64级。8259A级连时,有一个主片8259A,其余为从片8259A(最多8个)。级连时,主8259A的三条级连线

16、CAS0CAS2作为输出线,连至每个从8259A的CAS0CAS2每个从8259A的中断请求信号INT,连至主8259A的一个中断请求输入端IR,主8259A的INT线连至CPU的中断请求输入端INTR。,示例,7.3.2 8259A的工作方式,普通全嵌套方式,特殊全嵌套方式,自动循环方式,特殊循环方式,中断自动结束方式,中断非自动结束方式,5、中断结束方式,2、中断源屏蔽方式,普通屏蔽方式,特殊屏蔽方式,1、中断触发方式,边沿触发方式,电平触发方式,3、中断嵌套方式,4、优先级循环方式,中断查询方式,1. 中断触发方式,边沿触发方式 8259A将中断请求输入端出现的上升沿作为中断请求信号电平

17、触发方式 中断请求端出现的高电平是有效的中断请求信号中断查询方式 D7 D6 D5 D4 D3 D2 D1 D0 I.W2W1 W0,2.中断源屏蔽方式,普通屏蔽方式将IMR的Di位置1,则对应的中断IRi被屏蔽,该中断请求不能从8259A送到CPU如果IMR的Di位置0,则允许IRi中断产生特殊屏蔽方式将IMR的Di位置1,对应的中断IRi被屏蔽的同时,使ISR的Di位置0,3. 中断嵌套方式,普通全嵌套方式8259A的中断优先权顺序固定不变,从高到低依次为IR0、IR1、IR2、IR7中断请求后,8259A对当前请求中断中优先权最高的中断IRi予以响应,将其向量号送上数据总线,对应ISR的

18、Di位置位,至到中断结束(ISR的Di位复位)在ISR的Di位置位期间,禁止再发生同级和低级优先权的中断,但允许高级优先权中断的嵌套特殊全嵌套方式 允许同级中断,在级连时,一般主片用特殊全嵌套方式,从片用普通 全嵌套方式,4. 优先级循环方式,优先级自动循环方式当某一个中断请求IRi中断服务结束后,它的优先级自动降为最低,而紧跟其后的中断请求IRi+1优先级变为最高。优先级特殊循环方式优先级特殊循环方式设置后的最低优先级是由编程确定的,最高优先级也就随即确定了。而在优先级自动循环方式下,优先级自动循环方式设置后的最高优先级一定是IR0。,5. 结束中断处理方式,什么是8259A的中断结束?,8

19、259A利用中断服务寄存器ISR判断:某位为1,表示正在进行中断服务;该位为0,就是该中断结束服务。这里说明如何使ISR某位为0,不反映CPU的工作状态。,中断自动结束方式中断非自动结束方式 1) 普通中断结束方式配合全嵌套优先权方式使用当CPU用输出指令往8259A发出普通中断结束EOI命令时,8259A就会把所有正在服务的中断中优先权最高的ISR位复位EOI指令必须放在IRET前 2) 特殊中断结束方式配合循环优先权方式使用CPU在程序中向8259A发送一条特殊中断结束命令,这个命令中指出了要清除哪个ISR位,7.3.3 8259A的编程,初始化编程8259A开始工作前,必须进行初始化编程

20、给8259A写入初始化命令字ICW工作方式编程在8259A工作期间可以写入操作命令字OCW将选定的操作传送给8259A,使之按新的要求工作还可以读取8259A的信息,以便了解他的工作状态,1. 初始化命令字ICW,初始化命令字ICW最多有4个ICW1ICW4;8259A在开始工作前必须写入必须按照ICW1ICW4顺序写入ICW1和ICW2是必须送的ICW3和ICW4由工作方式决定,流程,8259A芯片的初始化流程,芯片控制初始化命令字 ICW1,表示可以任意为1为0都可以(建议为0),1只能为1,作为标志,中断触发方式:LTIM1,电平触发方式LTIM0,边沿触发方式,规定单片或级连方式:SN

21、GL1,单片方式SNGL0,级连方式,是否写入ICW4IC41,要写入ICW4IC40,不写入ICW4,即ICW4规定的位全为0,中断类型初始化命令字 ICW2,设置中断向量号T7T3为中断向量号的高5位低3位由8259A自动确定:IR0为000、IR1为001、IR7为111,主从片初始化命令字 ICW3,级连命令字主片8259A:Si1对应IRi接有从片;否则IRi没有连接从片从片8259A:ID0ID2编码说明从片INT引脚接到主片哪个IR引脚,方式控制初始化命令字 ICW4,嵌套方式:特殊全嵌套方式(SFNM1)普通全嵌套方式(SFNM0),数据线的缓冲方式:缓冲方式(BUF1)非缓冲

22、方式(BUF0),主片/从片选择:主片(M/S=1)从片(M/S=0),中断结束方式:自动中断结束(AEOI1)非自动中断结束(AEOI0),微处理器类型:16位80x86(PM1)8位8080/8085(PM0),例题,某80x86系统的中断系统由两片8259A级连组成,从8259A接在主8259A的IR2端,主8259A的IR1端中断请求的中断类型码分别为09H,从8259A的IR2中断请求的中断类型号为72H。假设它们都采用边沿触发方式、全嵌套方式、正常EOI结束方式。(1)写出主、从8259A中断类型码的范围;(2)假定主从片端口地址分别为20H22H、0A0H0A2H,试画出电路连线

23、图;(3)试编写全部初始化程序。,8259级联工作示意图,主8259A中断类型码的范围:08H0FH从8259A中断类型码的范围:70H77H,初始化主片8259A,mov al,11h;写入ICW1out 20h,alintr1:mov al,08h;写入ICW2out 22h,alintr2:mov al,04h;写入ICW3out 22h,alintr3:mov al,1Dh;写入ICW4out 22h,al,中断控制器的初始化程序段,初始化从片8259A,mov al,11h;写入ICW1out 0a0h,alintr5:mov al,70h;写入ICW2out 0a2h,alintr

24、6:mov al,02h;写入ICW3out 0a2h,alintr7:mov al, 01h;写入ICW4out 0a2h,al,中断控制器的初始化程序段,2. 操作命令字OCW,8259A工作期间,可以随时接受操作命令字OCWOCW共有3个:OCW1OCW3写入时没有顺序要求,需要哪个OCW就写入那个OCW,屏蔽操作命令字 OCW1(A0=1),读写时,端口地址A01内容写入中断屏蔽寄存器IMRDiMi对应IRi,为1禁止IRi中断;为0允许IRi中断。各位互相独立。,中断方式命令字 OCW2(A0=0),状态操作命令字 OCW3 (A0=0),查询状态寄存器,中断位I位为1,有外设请求中

25、断,W2W0的编码当前中断请求的最高优先级,7.3.4 8259A在PC/XT中的应用举例,在I/O地址空间中,分配给8259A的I/O端口地址为20H和21H。对8259A的初始化规定: 边沿触发方式,缓冲器方式, 中断结束为EOI命令方式,中断优先权管理采用全嵌套方式。8级中断源的类型码为08H0FH。各级中断源规定如表7 - 3 所示。(1) 8259A初始化编程。 根据系统要求,8259A初始化编程如下:,MOV AL,00010011B ;写入ICW1,设定边沿触发, OUT 20H,AL ;单片8259A,需要ICW4,MOV AL,00001000B ;写入ICW2,中断类型码基

26、数为08H, OUT 21H,AL ;8个中断源类型号为080FH,MOV AL,00001001B ;写入ICW4,普通全嵌套方式,OUT 21H,AL ;普通EOI缓冲方式,选用8086/8088CPU,在用户程序中,允许用OCW1来设置中断屏蔽寄存器IMR,以控制各个外设申请中断允许或屏蔽。但注意不要破坏原设定工作方式。 如允许日时钟中断IRQ0和键盘中断IRQ1, 其他状态不变, 则可送入以下指令:,(2) 8259A操作方式编程,IN AL, 21H ; 读出IMR,AND AL, 0FCH ; 只允许IRQ0和IRQ1,其他不变,OUT 21H, AL ; 写入OCW1, 即IMR

27、,由于中断采用的是非自动结束方式, 因此若中断服务程序结束,则在返回断点前,必须写入OCW2 00100000B,即20H, 发出中断结束命令。 MOV AL, 20H ; 设置OCW2的值为20H OUT 20H, AL ; 写入OCW2的端口地址20H IRET ; 中断返回 在程序中,通过设置OCW3,亦可读出IRR、ISR的状态以及查询当前的中断源。如要读出IRR内容以查看申请中断的信号线,这时可先写入OCW3,再读出IRR。 MOV AL, 0AH ; 写入OCW3, 读IRR命令 OUT 20H, AL NOP ; 延时, 等待8259A的操作结束 IN AL, 20H ; 读出I

28、RR,7.4 异常,外部中断或硬件中断通常称为中断(Interrupt),软件中断或异常中断通常称为异常(Exception)异常分为三类:故障(Faults)、 陷阱(Traps)和中止(Abort)。三类异常的差别表现在三个方面: 一是发生异常的报告方式,二是异常中断服务程序的返回方式,三是引起 异常的程序是否可被恢复2。,故障:若某条指令在启动之后,真正执行之前被检测到异常,产生异常中断,而且在中断服务完成后返回该指令,重新启动并执行完成,这类引起故障的程序可以被恢复执行。陷阱:该类异常是在指令执行期间被检测到并在引起异常的指令执行之后向系统报告。且其中断服务程序完成后返回到主程序中的下

29、一条指令。中止:该类异常是在微处理器面临严重错误时产生的中止。例如硬件错误或系统表格中的错误值造成的异常引起中止的指令是无法确定的,产生这种异常时,正执行的程序不能被恢复。因此中断服务程序往往重新启动操作系统并重建系统表格。,第7章教学要求,1. 熟悉8088的中断类型、中断响应过程、中断向量表2. 掌握内部中断服务程序的编写3. 理解8259A的内部结构、寄存器作用、中断过程4. 掌握8259A的普通全嵌套优先权、普通中断结束、边沿触发方式5. 8259A初始化,习题例解 1、4、8、9练习题 1、2(1)(2)、6,8259A芯片的初始化流程,8087中断请求RAM奇偶错I/O通道检查错,NMI屏蔽寄存器屏蔽位,8253定时器键盘未用异步通信卡(辅)异步通信卡(主)硬盘软盘并行打印机,NMI,INTR,01234567,优先级,8088CPU,8259A,I/O通道,

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

当前位置:首页 > 建筑环境 > 环境科学

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报