《《微机中断控制》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《微机中断控制》PPT课件.ppt(39页珍藏版)》请在三一办公上搜索。
1、1,第7章 微机中断系统,7.1 概述中断的概念中断分类7.2 可屏蔽中断处理过程CPU响应中断的过程中断向量表中断服务子程序中断响应时序7.3 中断优先级和中断嵌套7.4 可编程中断控制器 8259A7.5 保护模式下的中断,2,教学重点 8088 CPU的中断系统 内部中断服务程序的编写 中断控制器8259A的使用,3,7.1概述,中断:当CPU正常运行程序时,由于随机的事件(包括内部和外部请求),引起CPU暂停正在运行的程序,转去执行请求中断的外设(或内部事件)的中断服务程序,中断服务结束后再返回被中止的程序,继续执行,这一过程称为中断。中断过程给分为5个步骤:中断请求、中断判优、中断响
2、应、中断服务、中断返回。,4,中断相关概念:1、中断源:引起CPU产生程序中断的事件,即中断的来源。I/O设备。如键盘、纸带读入机、打印机。数据通道。如磁盘、磁带。实时钟,如外部所需的定时电路。故障源。如掉电、存储器奇偶校验错等。CPU运行指令引发,或为调试程序而设置的中断源。,外设发来的中断请求(随机发生)(可屏蔽、不可屏蔽中断)CPU内部执行指令引发的中断,称内部中断(预先安排的中断指令,预设的),5,2.中断响应CPU停止现在正在进行的处理任务,转向中断请求相对应的处理程序的过程.现场保护、关中断、断点保护、控制转移到中断服务子程序。3.中断优先级当有多个中断源同时请求中断时,因CPU不
3、能同时处理,所以必须按事先安排的优先级顺序依次处理。CPU先响应优先级高的中断,挂起优先级低的中断。中断嵌套:高级中断源能打断低级中断处理。当CPU在运行中断服务子程序时,又有新的更高优先级的中断申请 进入,CPU要挂起原中断进入更高 级的中断服务子程序,实现功能。所以中断系统应具有优先权排队 功能。4.中断屏蔽:由软件设置,使某些中断源即使有请求也不能被响应。,6,一个中断系统的基本功能:(1)能实现中断响应、中断服务、中断返回、中断屏蔽。(2)能实现中断优先级排队(3)能实现中断嵌套。,7,7.1.2 8088/8086的中断系统,8088的中断系统采用向量中断机制指通过中断向量进入中断服
4、务程序的一种方法。中断向量:中断服务程序入口地址能够处理256个中断用中断向量号0 255区别由中断向量号查中断向量表,得到中断向量中断源分两大类:外部中断和内部中断可屏蔽中断还需要借助专用中断控制器Intel 8259A实现优先权管理,8,8088/8086的中断系统结构,中断逻辑,INTO指令4,单步中断1,除法错误0,INT N指令,8088/8086CPU,NMI,8259A中断控制器,IR0IR1IR2IR3IR4IR5IR6IR7,外设中断源,INTA,可屏蔽中断请求,INTR,可屏蔽中断源,内部中断,非屏蔽中断请求,9,1.外部中断,外部中断是由于8088外部通过CPU引脚提出中
5、断请求而引起的中断。具有随机性。不可屏蔽中断(NMI):向量号固定为2外部通过非屏蔽中断(NMI)请求(边沿触发,上升沿之后维持两个时钟周期高电平有效),CPU必须响应。不受IF的控制。非屏蔽中断主要用于处理系统的意外或故障(如奇偶校验或协处理器运算错误等可屏蔽中断(INTR):向量号由中断控制器提供外部通过可屏蔽中断引脚INTR 请求(采用电平触发,高电平有效,响应时将产生有效的 INTA 信号,进入中断响应周期。得到响应的条件:外设中断请求是否被屏蔽 CPU是否开中断IF=1可屏蔽中断主要用于外设中断请求(请求交换数据等服务),10,中断标志IF的状态,IF0:可屏蔽中断不会被响应(禁止中
6、断,关中断,中断屏蔽)系统复位,使IF0任何一个中断被响应,使IF0执行指令CLI,使IF0IF1:可屏蔽中断会被响应(允许中断,开中断,中断开放)执行指令STI,使IF1执行指令 IRET 后IF 将恢复为中断前的状态,明确 IF 标志的状态是关键,11,复位、STI、CLI、CPU响应中断时都会影响IF的状态,12,数据输入的同时清除中断请求信号,具有中断请求与中断屏蔽的接口电路,写控制端口,同时设置中断屏蔽寄存器,P240图8-2,13,2.内部中断,内部中断是由于8088内部执行程序出现特殊情况而引起的中断。除0号中断外,其他都不具备随机性。除法错中断:向量号为0单步中断(TF=1):
7、向量号为1断点中断(int 3):向量号为3溢出中断(into):向量号为4指令中断(int n):向量号为n,内部中断的中断向量号部分由Intel公司确定,DOS要占用一部分 用户也可以使用一部分,实现自己的中断,14,7.2 可屏蔽中断处理过程,一、CPU响应可屏蔽中断的条件外设提出中断申请本中断位未被屏蔽本中断优先级别最高CPU允许中断,即CPU是开中断的IF=1,允许CPU响应可屏蔽中断现行指令执行结束二、中断响应的过程见JIA教材P265 图7.3,外部能发中断请求信号到CPU的INTR,15,8088的中断响应过程,NMI,N,软件中断,INTR,TF=1,中断响应周期读中断向量号
8、,下条指令,现行指令,IF1,N,N,N,N,Y,Y,Y,Y,Y,P265图7.3,从指令中或内部获得中断向量号,中断向量号2,中断向量号1,中断响应及处理,8088/8086各种中断源的优先权,实际上是指被识别出来的先后顺序,16,8088的中断响应过程(续),Y,又有NMI,TEMP1,标志寄存器入栈,TEMPTF,IFTF0,CS:IP入栈,获取中断向量,执行服务程序,弹出CS:IP,弹出标志寄存器,返回被中断程序,(1)现场保护,(2)关中断,清除TF,(3)断点保护,(4)据中断向量号查中断 向量表,得入口地址,(5)执行中断处理程序,N,N,Y,(6)断点恢复,现场 恢复,返回,单
9、步中断,IRET,17,8088/8086的中断优先级,高,低,采用查询中断方式,查询的先后顺序决定了各中断源的优先级别软件中断除法错中断指令中断溢出中断非屏蔽中断可屏蔽中断单步中断,内部中断、NMI 和INTR 中断处理过程的主要区别在于中断向量号的获得方法不同。,18,7.2.4 中断响应时序,两个连续的INTA周期,在第2个INTA从数据总线上CPU得到中断向量。在两个INTA之间可能插入空闲状态。,P274 图7.6,19,7.3 中断优先级和中断嵌套,问题:若系统有多个可屏蔽中断请求,CPU如何识别区分中断源?方法:中断查询。软件查询(软/硬件结合)方法:向量中断(硬件):CPU响应
10、中断时,通过硬件获取中断向量,不同外设,中断向量不同。问题2:若多个中断源同时请求中断服务,CPU应先响应哪一个?根据事先规定的优先级别来确定。如何规定优先级:1。软件查询中断优先级 2、硬件优先权排队 3、矢量中断优先级中断优先级控制器(可编程),20,1、用软件确定中断优先权,A0A15,锁存器,INTR,三态缓冲器,译码,8001H,D0D7,中断A中断B中断C中断H,IOR,中断查询接口,21,用软件确定中断优先权,CPU响应中断后,用软件查询(在中断服务子程序内的前面部分)是哪个外设提出了中断请求。屏蔽法:移位法:IN AL,20H XOR AL,AL TEST AL,80H IN
11、AL,20H JNE P1 RCL AL,1 TEST AL,40H JC P1 JNE P2 RCL AL,1 TEST AL,20H JC P2 JNE P3,优点:硬件简单。缺点:转入中断服务的时间长。,先查询的优先级高,22,2、硬件查询优先方式 链式中断优先权排队电路,A2,A1,C2,C1,D2,D1,B2,B1,中断源A,触发器,中断源B,触发器,中断源C,触发器,中断矢量D,中断矢量C,中断矢量B,中断矢量A,中断源D,触发器,缓冲器,缓冲器,缓冲器,缓冲器,INTA,高优先级,23,3、矢量中断优先级可编程中断优先级控制器,24,其中的中断优先权编码电路的原理简图,25,优先
12、权排队电路的工作原理,8:3优先权编码器将输出同时发生的中断请求中,优先权最高的请求对应的编码。(编码数字小的优先权最高)优先权寄存器存放着正在进行处理的中断的优先权编码。(若有,表明CPU正在执行一个中断;若没有,表明CPU不在进行中断处理)。比较器比较编码A2A1A0和B2B1B0 的大小,若A=B,则控制输出,使接口不向CPU发出新的中断申请;只有AB时,才使电路向CPU的INTR端发申请中断信号。,26,小结,计算机当中有相同任务,即可用软件实现,也可用硬件实现。要权衡考虑。采用可编程中断控制器是当前微机系统中解决可屏蔽中断优先权管理的常用方法。,27,8088的中断向量表,中断向量:
13、指示中断服务程序的入口地址,该地址包括:偏移地址IP、段地址CS(共32位)每个中断向量的低字是偏移地址、高字是段地址,需占用4个字节(低对低,高对高)。8088 微处理器从物理地址000H开始到3FFH(1KB),依次安排各个中断向量,向量号从0到255。256个中断向量所占用的1KB区域,称中断向量表,几个概念:中断向量号N/中断向量/中断服务程序的入口地址中断向量的存放首址N4,28,根据中断优先权处理中断的一般原则1.不同级别中断发生,按级别高低处理。2.当处理低级别的中断过程中,遇到高级别的中断,暂停低,转高的服务。3.当处理高级别的过程中,遇到低级别或同一级别的中断,不予理睬,待处
14、理完后再服务低级别。4.同一级别按先后排队。,29,中断服务程序的代码特点:,现场保护若允许中断嵌套,则开中断安排一条 STI 指令.结束前恢复现场为了正常恢复,在之前要先关中断 CLI,然后再作恢复工作结束时安排 IRET 中断返回指令,起到恢复标志位,开中断和返回断点的目的。,P271,30,7.2.3 中断服务程序设计,1、用户可编写的中断服务程序的种类:内部中断服务程序 用INT n 指令来调用外部可屏蔽中断的服务程序 由外设的中断请求引发使用 也可用INT n 指令调用2、要事先选定中断服务程序的向量号可以在系统预留给用户的没有被占用的中断 向量号中选则一个。,31,3、编写中断服务
15、程序与编写子程序类似利用过程定义伪指令PROC/ENDP现场保护完后的第1条指令,若为开中断指令STI,则该中断的级别低最后用中断返回指令IRET内部中断通常采用寄存器传递参数外部中断程序采用存储器传递参数4、主程序需要调用中断服务程序(只有该主程序需调用它)中断服务程序和主程序在同一个程序中主程序调用它之前,需要设置中断向量(入口地址)。然后利用INT n指令调用该中断服务程序5、用户的中断服务程序如要让其它程序使用必须驻留在系统内存中。编写安装该中断服务程序的主程序设置中断向量使中断服务子程序驻留内存在其他程序中,只要了解其入口要求和返回参数,就可以用INT N 调用。,32,将中断子程序
16、的入口地址置入中断向量表的相应表项中 设选择的向量号为,其置入方法有两种:一是用数据传送指令将中断服务子程序入口相对地址存放在物理地址为4n的字单元中,将中断服务子程序入口段地址存放在物理地址为4+2的字单元中。二是采用DOS置新中断向量的中断功能(25功能),即:向量号 21H 功能号 25H 入口参数:DS中断服务子程序入口段地址;DX中断服务子程序入口相对地址;AL新增的向量号。,33,使中断服务子程序驻留内存。一旦中断服务子程序驻留内存后,一般程序员使用这一新增的中断调用就如同调用DOS或BIOS的中断子程序一样,只要了解其入口要求和返回参数就可调用。程序驻留在内存后,它占用的存储区就
17、不会被其他软件覆盖。使程序驻留内存,要求该程序以COM(此种结构的程序要求入口定位于100H、并且数据和代码均在同一个段内)形式运行。使程序驻留内存的方法是采用DOS的中断调用,即:向量号 21H 功能号 31H 入口参数:DX驻留程序字节数;该功能使当前程序的DX个字节驻留内存并返回DOS。即用DOS功能调用31H代替4CH终止程序并返回DOS即可。,34,读取中断向量表中某中断号对应中断向量的原值用DOS的中断功能(35功能),即:向量号 21H 功能号 35H 入口参数:AL向量号。出口参数:ES段地址;BX偏移地址;一般把读出的中断向量再转存到存储器中,以备恢复时使用。,35,C SE
18、GMENT ASSUME CS:C ORG 100HB:MOV AX,SEG SUBP MOV DS,AX MOV DX,OFFSET SUBP;建立50H中断向量表项 MOV AH,25H MOV AL,50H INT 21H,例1:在微机中增加一中断服务子程序,其向量号为50H其功能是BX内容增1。,;中断服务程序驻留内存并返回DOS MOV DX,N MOV AH,31H INT 21H SUBP PROC FAR INC BX IRET SUBP ENDPN EQU C ENDS END B,36,设这一源程序名为INCBX.ASM,经汇编、连接后生成INCBX.EXE。然后可用DEB
19、UG将其转换成COM形式的执行文件。设文件名为INC.COM,操作步骤如下:C DEBUG INCBX.EXE 回车 N INC.COM W 回车 Q 回车 C 这时可运行INC.COM程序,即:C INC 回车 一旦运行INC.COM程序后,在微机中就新增了一个中断子程序。在其后运行的程序中,就如同调用DOS或BIOS中断子程序一样调用INT 50H,其功能是BX内容增1。,37,例2:内部中断服务程序,编写:80H 号中断服务程序功能:通过BIOS功能调用INT 10H,显示以“0”结尾的字符串。入口参数:DS:DX存字符串缓冲区首地址(段地址:偏移地址)。,38,D SEGMENT in
20、toff dw?;用于保存原中断向量将来恢复 intseg dw?;用于保存原中断向量将来恢复 intmsg db A Instruction Interrupt!,0dh,0ah,0;要显示的信息D ENDSC SEGMENT ASSUME C:CS,D:DSBG:MOV AX,D MOVDS,AX;读出原中断向量 mov ax,35 80h int 21h mov intoff,bx;保存偏移地址 mov intseg,es;保存段基地址 push dsmov dx,offset new80hmov ax,seg new80hmov ds,axmov ax,25 80h;设置新中断向量in
21、t 21hpop ds,mov dx,offset intmsg int 80h;恢复原中断向量 mov dx,intoffmov ax,intsegmov ds,axmov ax,25 80h int 21hmov aH,4chint 21h,39,New80h proc sti;开中断,允许中断嵌套 push ax;保护现场 push bx push si mov si,dxnew1:mov al,si cmp al,0;判是否串尾 jz new2 mov bx,0;调BIOS中断 mov ah,0eh int 10h inc si jmp new1new2:pop si;恢复现场 pop bx pop ax iret;中断返回New80h endp,C ENDS END BG,