第七章 中断
- 格式:doc
- 大小:224.00 KB
- 文档页数:13
第七章1. 什么叫中断?什么叫可屏蔽中断和不可屏蔽中断?答:当CPU正常运行程序时,由于微处理器内部事件或外设请求,引起CPU中断正在运行的程序,转去执行请求中断的外设(或内部事件)的中断服务子程序,中断服务程序执行完毕,再返回被中止的程序,这一过程称为中断。
可屏蔽中断由引脚INTR引入,采用电平触发,高电平有效,INTR信号的高电平必须维持到CPU响应中断才结束。
可以通过软件设置来屏蔽外部中断,即使外部设备有中断请求,CPU可以不予响应。
当外设有中断申请时,在当前指令执行完后,CPU首先查询IF位,若IF=0,CPU就禁止响应任何外设中断;若IF=1,CPU就允许响应外设的中断请求。
不可屏蔽中断由引脚NMI引入,边沿触发,上升沿之后维持两个时钟周期高电平有效。
不能用软件来屏蔽的,一旦有不可屏蔽中断请求,如电源掉电等紧急情况,CPU必须予以响应。
2. 列出微处理器上的中断引脚和与中断有关的指令。
答:INTR:可屏蔽中断请求输入引脚。
NMI:不可屏蔽中断请求输入引脚INTA:可屏蔽中断响应引脚INT n :软件中断指令,其中n为中断类型号INTO:溢出中断,运算后若产生溢出,可由此指令引起中断。
CLI:中断标志位IF清0STI:置位中断标志位为13. 8086/8088系统中可以引入哪些中断?答:(1)外部中断两种外部中断:不可屏蔽中断NMI和可屏蔽中断INTR(2)内部中断内部中断又称软件中断,有三种情况引起:①INT n :中断指令引起的中断②CPU的某些运算错误引起的中断:包括除法错中断和溢出中断③由调试程序debug设置的中断:单步中断和断点中断。
4. CPU响应中断的条件是什么?简述中断处理过程。
答:CPU响应中断要有三个条件:外设提出中断申请;本中断位未被屏蔽;中断允许。
可屏蔽中断处理的过程一般分成如下几步:中断请求;中断响应;保护现场;转入执行中断服务子程序;恢复现场和中断返回。
CPU在响应外部中断,并转入相应中断服务子程序的过程中,要依次做以下工作:⑴从数据总线上读取中断类型号,将其存入内部暂存器。
第七章中断一、教学内容1 中断与异常中断2 向量中断系统3 可编程中断控制器8259A芯片4 中断向量表的建立方法5 CPU中断处理顺序二、要求掌握和理解中断、多任务的原理、概念及用途和中断应用的具体实现。
三、重点掌握中断控制器8259A的工作原理及其与CPU的接口技术和编程实现。
四、难点在于对中断体系结构和多任务系统的工作原理、概念的理解和具体应用编程与实现。
五、本章分为3讲,每讲2学时。
第一讲1.中断与异常中断1)中断的概念中断(中断/异常)中断源中断请求中断响应中断处理中断返回2)中断分类按中断源的性质可以把中断分类:①外部硬件中断:中断源是外部硬电路。
通过CPU的NMI引脚或INTR引脚向CPU提出中断请求。
INTR:可屏蔽中断,受CPU内标志寄存器中IF位的屏蔽NMI:非屏蔽中断,不受IF位的屏蔽。
CPU每执行完一条指令,检测NMI和INTR引脚上有无中断请求。
②内部异常中断:中断源是CPU内部正在执行的过程发生的异常情况。
如除法操作时结果太大 (分母太小) ;访问某个页或段时,该页或段正好不在内存;系统的硬件、软件 (各种系统用表)发生错误。
3)中断优先顺序CPU的中断优先权排列从高到低为:➢除法出错中断,溢出中断,INT n,…➢NMI➢INTR➢单步中断4)中断类型码中断类型码是连接中断源和中断处理程序的唯一桥梁。
80X86可处理256级中断,中断类型码可以是0~255,一部分由系统占用,一部分用户可以支配。
比如:除法错误(n=0)调试异常(n=1)NMI中断(n=2)断点中断(n=3)溢出中断(n=4)5)中断处理顺序6)中断向量表和中断描述符表每个中断都分配有中断类型码,CPU通过中断类型码经过处理要找到对应的中断服务程序的入口地址。
第二讲可编程中断控制器8259A1.8259A的内部结构及管脚分配1)内部结构①中断请求寄存器(IRR)中断请求IR7-IR0,当某个为高电平时,IRR相应位置“1”。
②中断服务寄存器(ISR)任何一级中断被响应,执行其中断服务程序,ISR相应位置“1”。
多重中断情况下,ISR中多位被同时置“1”。
③优先权判别器(PR)当IR7-IR0中有多个中断请求信号同时产生时,PR判定哪个中断请求具有最高优先权,并把它置入ISR的相应位。
④中断屏蔽寄存器(IMR)通过IMR可实现对各级中断的有选择的屏蔽。
⑤级联(中断最多扩展到64级)一片8259A只能接收8级中断,当超过8级时,可用多片8259A级联使用,构成主从关系。
连线要求:➢主8259A:级联信号CAS2-CAS0是输出信号; SP端为“1”➢从8259A:级联信号CAS2-CAS0是输入信号; SP端为“0”➢从8259A的INT输出接到主的中断输入端IR上⑥控制电路根据IRR的置位情况和优先权判别器PR的判定结果,向8259A内部其它部件发出控制信号,并向CPU发出中断请求INT和接收来自CPU的中断响应INTA。
⑦读/写控制逻辑A0 :8259A占两个I/O端口地址,用A0来选:端口地址的其它高位由片选信号端输入。
:读信号 :写信号⑧数据总线缓冲器双向8位三态缓冲器,构成8259A与CPU之间的数据接口。
2)8259A的管脚分配➢与外部设备连接的中断请求输入管脚IR0-IR7;➢与CPU连接的数据通路和控制信号:D0-D7,WR,RD,INTA,INT;➢用于8259A级联的管脚CAS0-CAS2,SP/EN;➢端口地址选择信号CS,A0。
2.8259A的中断管理方式1)中断优先权管理①完全嵌套方式固定优先权:IR0>IR1>…>IR7。
高优先级的中断可进入低优先级,但低优先级不能进入高优称级或同等优先级。
②自动循环方式IR0-IR7轮流具有最高优先权。
当任何一级中断被处理完,它的优先级别就被改变为最低,而最高优先级分配给该中断的下一级中断。
③中断屏蔽方式➢普通屏蔽:在中断屏蔽寄存器IMR中,将某一位或几位置“1”来屏蔽掉相应级别的中断请求。
➢特殊屏蔽:可使低优先级别的中断进入正在服务的高优先级别中。
④特殊完全嵌套方式(用于级联情况)接在主片IR3上的从片比接在IR4上的从片具有高的优先权;而主片上IR0,IR1,IR2上的中断比从片具有高优先权。
2)8259A中断结束的管理方式中断结束的管理就是用不同的方式使ISR的相应位清“0”,并确定下面的优先排队。
➢完全嵌套情况➢自动循环情况➢特殊完全嵌套情况3.8259A的编程1)预置命令字① ICW1的格式D1=1,使用单片8259A;D1=0, 8259A级联。
D3=1,电平触发方式;D3=0,边缘触发方式。
② ICW2:提供中断类型号中断类型号的高5位由用户指定,低3位由8259A的中断请求输入端IR7-IR0的编码决定。
中断类型码是连续的。
在ICW2中,用户指定高5位后,当8259A的某个IR端有中断请求,就自动填入相应IR的编码到ICW2的低3位。
③ ICW3只有在8259A有级联的情况下使用,主片和从片的ICW3格式不同,主片的ICW3表明主8259A的哪个IR端接有从8259A。
从片的ICW3表明它接在主8259A 的哪个IR端。
④ ICW4的格式➢AEOI:定义是否采用自动中断结束方式。
D1=1为自动EOI, D1=0为正常EOI。
➢SFNM:D4=1为特殊完全嵌套方式,D4=0为非特殊完全嵌套方式。
➢BUF及M/S:0X—非缓冲方式;10—缓冲方式从片; 11—缓冲方式主片。
2)操作命令字① OCW1的格式实现屏蔽功能,OCW1的内容被置入中断屏蔽寄存器IMR中,Di为“1”:禁止对应的IR端的中断请求。
Di为“0”:允许对应的IR端的中断请求.OCW1的格式如下:② OCW2的格式控制中断结束,优先权循环等操作。
L2-L0:编码指定相应的IR端为当前结束中断。
R SL EOI 功能0 0 1 一般EOI命令0 1 1 特殊EOI命令1 0 1 自动循环的一般EOI命令1 0 0 设置自动循环AEOI方式0 0 0 清除自动循环AEOI方式1 1 1 自动循环特殊EOI命令1 1 0 置位优先权命令0 1 0 无效③ OCW3的格式控制8259A的中断屏蔽和读取寄存器的状态。
➢ESMM及SMM:0X-无用;10-清除特殊屏蔽; 11-设置特殊屏蔽➢P=1,查询中断; P=0,非查询中断;➢RR及RIS:0X-无用;10-随后读IRR; 11-随后读ISR例1:在某个8086最小方式系统中接有一片8259A,有一外设中断请求从IR7引入,8259A的端口地址及外设申请中断的中断类型号由图给出,试写出8259A的初始化程序。
端口地址分析:中断类型号分析:初始化程序:INTRRUP SEGMENT AT 0ORG 0C7H*4DD INTC7INTRRUP ENDSINTC7 …………MAIN SEGMENT……CLI;关中断MOV AL,13H ;ICW1OUT 84H,ALMOV AL,0C7H ;ICW2OUT 86H,ALMOV AL,01 ;ICW4OUT 86H,ALSTI ;开中断MAIN ENDS例 2: 8259A的级联使用。
某系统有两片8259A,➢从片8259A接主片的IR4,主片的IR2和IR5有外部中断引入,从片IR0和IR3上也分别有外设中断引入。
➢主片中断类型号分别为62H,65H,中断服务程序在同一段中,段地址为2000H,两个中断服务的偏移地址为2500H和2600H。
➢从片中断类型号分别为40H,43H,中断服务程序也在同一段中,段地址为4000H,偏移地址为2640H和4620H,试分别写出主8259A和从8259A的初始化程序。
主片8259A,设定如下要求:(1) 主8259A有级联,从IR4引入;(2) 中断请求信号以边沿触发;(3) 中断类型号为60H~ 67H;(4) 采用特殊完全嵌套方式;(5) 采用非自动结束EOI,非缓冲方式,SP=1;(6) 采用一般EOI结束方式;(7) 屏蔽IR2,IR4和IR5以外的中断源。
主片8259A的初始化程序如下:……MOV AL,11H ;ICW1,A0=0MOV DX,MPORT0OUT DX,ALMOV AL,62H ;ICW2,A0=1MOV DX,MPORT1OUT DX,ALMOV AL,10H ;ICW3,A0=1OUT DX,ALMOV AL,11H ;ICW4,A0=1OUT DX,ALMOV AL,0CBH ;OCW1,A0=1OUT DX,ALMOV AL,20H ;OCW2,A0=0MOV DX,MPORT0OUT DX,AL从片8259A的要求为:(1) 从片8259A接在主片IR4上;(2) 中断请求信号为边沿触发;(3) 中断类型号分别为40H~ 47H;(4) 采用特殊完全嵌套方式;(5) 采用非自动结束EOI,非缓冲方式,SP=0;(6) 采用一般EOI结束;(7) 屏蔽掉IR0和IR3以外的中断源。
从片8259A的初始化程序为:……MOV AL,11H ;ICW1,A0=0 MOV DX,SPORT0OUT DX,ALMOV AL,40H ;ICW2,A0=1 MOV DX,SPORT1OUT DX,ALMOV AL,04 ;ICW3,A0=1 OUT DX,ALMOV AL,11H ;ICW4,A0=1 OUT DX,ALMOV AL,0F6H ;OCW1,A0=1OUT DX,ALMOV AL,20H ;OCW2,A0=0 MOV DX,SPORT0OUT DX,AL将中断服务程序地址置入中断地址入口表中:SEGMENT AT 0ORG 40H*4SINTR0 DW 2640H ;从片IR0中断服务地址DW 4000HORG 43H*4SINTR3 DW 4620H ;从片IR3中断服务地址DW 4000HORG 62H*4MINTR2 DW 2500H ;主片IR2中断服务地址DW 2000HORG 65H*4 ;主片IR5中断服务地址MINTR5 DW 2600HDW 2000H例3:系统正在处理由8259A的IR3引入的中断,而临时有一个低优先级别的中断要紧急处理,一般情况下是不允许的,但8259A利用设置操作命令字(OCW3)可以做到这点,对8259A设置特殊屏蔽方式(SMM位)使运行的中断暂时停止,一直维持到SMM复位。
IR3服务程序……CLI ;关中断MOV AL,08H ;屏蔽IR3,OCW1MOV DX,PORT1OUT DX,ALMOV AL,68H ;OCW3,SMM位置“1”MOV DX,PORT0OUT DX,ALSTI ;开中断……. ;低优先级中断处理CLI ;关中断MOV AL,48H ;OCW3,SMM复位MOV DX,PORT0OUT DX,ALMOV AL,00H ;OCW1,开放IR3MOV DX,PORT1OUT DX,ALSTI ;开中断第三讲中断向量表的建立方法1.绝对地址置入法AT指定段地址(16位) ,ORG指定偏移地址,用DD伪指令将中断服务程序的首地址装入。