微机原理课件第七章微型计算机中断系统.ppt
《微机原理课件第七章微型计算机中断系统.ppt》由会员分享,可在线阅读,更多相关《微机原理课件第七章微型计算机中断系统.ppt(78页珍藏版)》请在三一办公上搜索。
1、第七章 微型计算机中断系统,7-1 概述,一、中断概念当CPU正常运行程序时,由于微处理器内部事件或外设请求,引起CPU中断正在运行的程序,转去执行请求中断的外设(或内部事件)的中断服务子程序,中断服务程序执行完毕后,再返回被中止的程序,这一过程称为中断。1.中断源引起程序中断的事件称为中断源。中断源有外部中断和内部中断,内部中断由程序预先安排的中断指令(INT n)引起,或由于CPU运算中产生的某些错误(如除法出错、运算溢出)引起。外部中断是外部设备或协处理器向CPU发出中断申请引起的。2.中断响应,中断请求何时发生是随机的。CPU在每条指令的最后一个T周期去检测INTR引脚,CPU一旦检测
2、到有中断请求,在满足中断响应的条件下(IF=1),CPU响应中断,会向外设发出 中断响应信号。并保护断点(当前CS、IP和PSW值 入栈),然后转向中断服务程序。中断服务程序执行完毕,CPU返回原执行程序的中断处,继续向下执行,称为中断返回。3.中断向量表CPU响应中断后,必须由中断源提供地址信息,引导程序进入中断服务子程序,这些中断服务子程序的入口地址存放在中断向量表中。内存中专门开辟了一个区域,存放中断向量表(也称中断矢量表)。4.中断优先级当有多个中断源请求中断时,中断系统判别中断申请的优先级,CPU响应优先级高的中断,挂起优先级低的中断。当CPU在运行中中断服务子程序时,又有新的更高优
3、先级的中断申请进入,CPU要挂起原中断进入更高级的中断服务子程序,,实现中断嵌套功能。5.中断屏蔽当中断源申请中断时,CPU可以由软件设置,使之不能响应,称为中断屏蔽。本章讨论与8086/8088 CPU相配合的中断系统及中断接口芯片8259A。二、中断分类8086/8088有一个强有力的中断系统,可以处理256种不同的中断。8086/8088系统上的中断源如图7-1所示。以产生中断的方法来分类,256种中断可以分为两大类:外部中断和内部中断。,图7-1 8086/8088中断源,外部中断也称为硬件中断,是由外部的硬件产生的,硬件中断又分成不可屏蔽中断和可屏蔽中断。下面分别加以说明。,1.外部
4、中断8086/8088 CPU有两个外部中断请求线:不可屏蔽中断请求线NMI和可屏蔽中断请求线INTR。(1)由NMI引脚引入的不可屏蔽中断请求,采用边沿触发,上升沿之后维持两个时钟周期高电平有效。对于不可屏蔽中断用户是不能用软件来屏蔽的,一旦有不可屏蔽中断请求,CPU必须予以响应。不可屏蔽中断请求的中断类型号为2,即中断处理程序的入口地址在0段的0008H000BH的4个单元中。(2)由INTR引脚引入的外设提出的可屏蔽中断请求,采用电平触发,高电平有效,INTR信号的高电平必须维持到CPU响应中断才结束。可屏蔽中断是用户可以通过软件设置来屏蔽的外部中断,即使外部设备有中断请求,CPU可以不
5、予响应。由外设引起的可屏蔽中断请求要得到响应应有两个条件:外设中断请求是否被屏蔽;CPU是否允许响应中断。在8086 CPU系统中,外设的中断请求信号接入可编程中断控制器8259A的IRi端,而8259A的中断输出INT连到CPU,的INTR引脚上。8259A中设有中断屏蔽寄存器,它的8位对应控制8个外设,通过设置这个寄存器的某位为0或1,可以允许或禁止某个外设的中断请求。一块8259A可管理8个中断,当外设超过8个时,可以使用多个8259A进行级联,扩大到64级中断。外设与8259A的连接是由用户来设计的,硬件连线决定了中断类型号和中断优先级次序。CPU是否允许响应中断,与中断允许位IF有关
6、。IF=1CPU允许响应中断;IF=0,CPU禁止响应中断。2.内部中断内部中断又称为软件中断。软件中断通常有三种情况引起:由中断指令INT引起的中断;由CPU的某些运算错误引起的中断;由调试程序debug设置的中断。内部中断只要由上面三种情况引起了,是不可屏蔽的!(1)由中断指令INT引起的中断CPU执行一条INT n指令后立即产生中断,并且调用系统中相应的中断处理程序去完成中断功能,指令中的n指出了,中断类型号。例7-1 测试存储器容量INT 12HCPU执行这条指令时,立即产生一个中断。并从中断向量表的0:12H4开始的单元中取出4个字节,其内容为中断服务子程序的段地址和偏移地址,然后转
7、去此入口去执行中断服务子程序,完成对存储器的测试。(2)由CPU的某些运算错误引起的中断CPU在运行程序时,会发现一些运算中出现的错误,此时CPU就会中断,让用户去处理这些错误。主要有:除法错中断:除法错中断类型号为0,在除法运算中,若除数为0或商超过了寄存器所能表达的范围,就产生一个类型号为0的中断,转去类型号为0的中断处理。溢出中断:溢出中断类型号为4,专用指令为INTO。若OF=1执行中断指令INTO;若OF=0,不执行中断指令。通常INTO放在加、减法运算指令的后面。,例7-2 测试加法的溢出ADD AX,BXINTO(3)由调试程序debug设置的中断在调试程序时,为了检查中间结果或
8、寻找程序中的错误,在程序中可设置断点或进行单步跟踪,调试程序debug有此功能它也是由中断来实现的。单步中断:单步是每次只执行一条指令,然后屏幕显示当前各寄存器和有关存储单元的内容,以及下条要执行的指令。这样逐条运行指令,来跟踪程序的流程,以检查出程序中的错误。单步中断是在标志位TF=1时,每条指令执行后,CPU自动产生中断类型号为1的中断。断点中断:中断类型号为3。用debug调试程序时,可用G命令设置断点。当CPU执行到断点时便产生中断,同时显示当前各寄存器和有关存储单元的内容,以及下条要执行的指令,供用户检查。设置断点实际上是把一条断点指令INT 3插入到断点设置处。,7-2 中断处理过
9、程,可屏蔽中断处理的过程一般分成几步:中断请求;中断响应;保护现场;转入中断服务子程序;恢复现场和中断返回。其流程如图7-2所示。,图7-2 可屏蔽中断处理流程图,一、CPU响应中断过程CPU响应中断要有三个条件:外设提出中断申请本中断位未被屏蔽中断允许当中断接口电路中的中断屏蔽触发器未被屏蔽时,外设可通过中断接口发出中断申请。外设向CPU发出中断请求的时间是随机的,而CPU在每条指令的最后一个机器周期的最后一个T状态去采样中断请求输入线INTR,当CPU在INTR引脚上接收到一个有效的中断请求信号,而CPU内部的中断允许触发器是开放的,则在当前指令执行完后CPU响应中断。CPU响应中断后,对
10、外设接口发出两个中断响应信号,第一个 信号通知外设,CPU已响应申请的中断请求,准备发送中断类型号;当外设收到第二个 以后,立即往数据线上给CPU送中断类型号。CPU在响应外部中断,并转入相应中断服务子程序的过程中,自动依次做以下工作:,(1)从数据总线上读取中断类型号,将其存入内部暂存器。(2)将标志寄存器PSW的值入栈。(3)将PSW中的中断允许标志IF和单步标志TF清0,以屏蔽外部其它中断请求,和避免CPU以单步方式执行中断处理子程序。(4)保护断点,将当前指令下面一条指令的段地址CS和指令指针IP的值入栈,使中断处理完毕后,能正确返回到主程序继续执行。(5)根据中断类型号到中断向量表中
11、找到中断向量,转入相应中断服务子程序。(6)中断处理程序结束后,从堆栈中依次弹出IP、CS和PSW,然后返回主程序断点处,继续执行原来的程序。对于不可屏蔽中断请求,不必判断IF是否为1,也不是由外设接口给出中断类型号,从NMI引脚进入的中断请求规定其中断类型号为2。在运行中断子程序过程中,若NMI引脚上有不可屏蔽中断请求信号,CPU仍能响应。软件中断由程序设定,没有随机性,它不受中断允许标志,位IF的影响,中断类型号由指令INT n中的n决定。正在执行软件中断时,如果有不可屏蔽中断请求,就会在当前指令执行完后立即予以响应。如果有可屏蔽中断请求,并且IF=1,也会在当前指令执行完后予以响应。二、
12、中断向量表寻找中断源可以用查询中断及矢量中断两种方法。查询中断是采用软件查询方法,中断响应后启动中断查询程序,依次查询哪个设备的中断请求触发器为1,检测到后,转向此设备预先设置的中断服务程序入口地址。此方法较简单,但花费时间多,并且后面的设备服务机会少,在8086系统中一般采用矢量中断方法。矢量中断是将每个设备的中断服务程序的入口地址(矢量地址)集中,依次放在中断向量表中。当CPU响应中断后,控制逻辑根据外设提供的中断类型号查找中断向量表,然后将中断服务程序的入口地址送到CS段寄存器和指令指针IP,CPU转入中断服务子程序。这样大大加快了中断处理的速度。,1.中断向量表中断向量表又称中断服务程
13、序入口地址表。8086/8088系统允许处理256种类型的中断,对应的中断类型号为0FFH在存储器的00000H003FFH,占用1K字节空间,用作存放中断向量。每个类型号占4个字节,高2个字节存放中断入口地址的段地址,低2个字节存放段内偏移地址,如图7-4所示。,图7-4 8086/8088中断向量表,各个中断处理程序的段地址和偏移地址按中断类型号顺序存放在中断向量表中。因此由中断类型号n4即可得到相应中断向量的地址,取4n和4n+1单元中的内容(中断入口程序偏移地址)装入指令指针IP,取4n+2和4n+3单元中的内容(中断入口程序段地址)装入代码段寄存器CS,即可转入中断处理服务子程序。例
14、7-3 某中断的中断类型号为68H,图7-5图示了中断操作过程:(1)取中断类型号68H;(2)计算中断向量地址68H4=1A0H;(3)取中断入口地址的偏移地址送入IP,IP=2050H,段地址;送入CS,CS=A000H;(4)转向中断服务程序;(5)中断返回到INT 68H指令的下一条指令。,图7-5 中断操作过程例子,2.中断向量(中断入口地址)的设置IBM PC对256种中断类型已进行了地址分配,附录D中给出了中断向量地址分配表。其中类型04为专用中断,中断入口地址已由系统定义,用户不能修改;类型5类型31为系统使用中断,也不允许用户修改;其余的中断类型号原则上可以由用户定义,但实际
15、上,有些中断类型目前已有用途,例INT 21H为系统功能调用,中断类型20H3FH为DOS中断调用。供用户使用的中断类型号,它可以由用户定义为软中断,由INT n指令引用;也可以通过INTR端直接接入,或通过中断控制器8259A引入可屏蔽硬件中断。使用时用户要自己将中断服务程序入口地址置入相应的中断向量表中。有两种方法可为中断类型号n设置中断向量,即将中断服务程序的入口地址置入中断类型号n所对应的中断向量表中。一种方法用指令来设置,另一种方法利用DOS功能调用来设置。,例7-5 用指令来设置中断服务程序的入口地址到中断类型号n所对应的中断向量表中。MOVAX,0MOV ES,AXMOV BX,
16、N*4MOVAX,OFFSET INTRAD;置入偏移地址MOVES:WORD PTRBX,AXMOVAX,SEG INTRAD;置入段地址MOVES:WORD PTRBX+2,AXSTIINTRAD:;类型号n的中断服务子程序 IRET实际上,在设置或检查任何中断向量时,总是避免直接使用中断向量的绝对地址,而是利用DOS功能调用INT 21H设,置中断向量和取出中断向量。此外要注意,在设置自己的中断向量时,应先保存原中断向量,在设置新的中断向量,在程序结束前恢复原中断向量。设置中断向量:把由AL中指定中断类型号的中断向量DS:DX放置在中断向量表中。则操作如下:预置:AL=中断类型号DS:D
17、X=中断服务程序入口地址AH=25H执行:INT 21H取中断向量:把由AL中指定中断类型号的中断向量,从中断向量表中取到ES:BX中。则操作如下:预置:AL=中断类型号AH=35H执行:INT 21H返回:ES:BX=中断服务程序入口地址,例7-6 利用DOS功能调用设置中断向量和取中断向量。MOVAL,N;取中断向量到ES:BX中MOV AH,35HINT21HPUSH ES;存原中断向量PUSHBXPUSHDSMOVAX,SEG INTRAD;设置新的中断向量MOV DS,AXMOVDX,OFFSET INTRADMOVAL,NMOVAH,25HINT21HPOPDS,POPDX;恢复原
18、中断向量POPDSMOVAL,NMOVAH,25HINT21HRETINTRAD:;类型号n的中断服务子程序IRET3.中断类型号的获取(1)对于除法出错、单步中断、不可屏蔽中断NMI、断点中断和溢出中断,CPU分别自动提供中断类型号04。(2)对于用户自己确定的软件中断INT n,中断类型号就是n。(3)对外部可屏蔽中断INTR,可用硬件电路(例如通用并行接口芯片8212)设计产生中断类型号。(4)对外部可屏蔽中断INTR,可以用可编程中断控制器8259A,获得中断类型号。如图7-1所示,8个中断请求信号接到8259A。当外设申请中断时,8259A响应优先级高的中断源,将中断请求信号送到CP
19、U的INTR端。8259A收到CPU发出的第二个中断响应信号 时,将对应中断源的中断类型号送给CPU,CPU获取中断类型号后,自动转入相应的中断服务子程序。IBM PC机内装有一片8259A,它的中断入口分配如表7-1所示:,表7-1 8259A的中断源分配,8259A中有中断屏蔽寄存器,它的端口地址为21H,中断屏蔽寄存器的位70对应IR7IR0。可以通过设置屏蔽寄存器的各位为0或1去控制每一个中断源的中断允许或屏蔽,此位为0,允许中断;此位为1,禁止中断。例7-7 若某系统中允许定时和键盘中断,则中断屏蔽控制字为:MOVAL,11111100BOUT21H,AL在中断服务程序的结束处,应发
20、出中断结束命令(EOI)给中断命令寄存器,中断命令寄存器的端口地址为20H。例7-8 IBM PC机中断结束命令的程序为:MOVAL,20HOUT20H,AL综合上面的介绍,我们对中断有了一定的了解,下面将有关中断的主程序编写方法归纳如下:1.主程序中的初始化(1)设置中断向量。,(2)设置8259A的中断屏蔽寄存器的中断屏蔽位。(3)设置CPU中断允许位标志IF(开中断STI)。2.硬件(外设接口)和CPU自动完成(1)外设接口向CPU INTR端发中断请求。(2)当前指令执行完后,CPU发两个中断响应信号 给外设接口。(3)CPU读取中断类型号n。(4)CPU自动将当前PSW、CS、IP内
21、容入栈保护。(5)清除IF、TF,禁止外部中断和单步中断。(6)从中断向量表中取(4n)地址中内容IP;取(4n+2)地址中内容CS。(7)转向中断服务子程序。这里一定要注意三点:对重复前缀的指令(如REP MOVSB)作为一条指令处理。执行一次重复前缀和串指令即可响应中断,而不是把串操作全部执行完。,遇到开中断指令STI和中断返回指令IRET,要在这两条指令执行完后,再执行一条指令才能响应中断。CPU自动清除IF和TF位,使CPU进入中断服务子程序后,不允许再产生新的中断,如果在中断服务子程序中还允许外部中断进入,则在中断服务子程序中必须再开中断。三、中断服务子程序中断服务子程序的功能各有不
22、同,但所有的中断服务子程序都有相同的结构形式。(1)程序开始必须保护中断时的现场,可以通过一系列PUSH指令将CPU各寄存器的值入栈保护。(2)若允许中断嵌套,则用STI指令来设置开中断,使中断允许标志IF=1。(3)执行中断处理程序。(4)用CLI指令来设置关中断,使中断允许标志IF=0,禁止其他中断请求进入。,(5)给中断命令寄存器送中断结束命令EOI,使当前正在处理的中断请求标志位被清除,否则同级中断或低级中断的请求仍会被屏蔽掉。(6)恢复中断时的现场,通过一系列POP指令将CPU各寄存器的值恢复。(7)用中断返回指令IRET返回主程序,此时堆栈中保存的断点值和标志值分别装入IP、CS和
23、PSW。进入中断服务程序时,TF和IF清除,不再响应其他外设的中断请求,所以要设置开中断,以允许中断进入,实现中断嵌套。恢复寄存器内容时,为了防止有中断进入破坏其内容,要执行关中断,然后在中断返回时原来的PSW返回,使IF=1,又再开中断,这样返回主程序后,中断请求能得到允许。中断结束命令EOI一般在中断处理结束前发出,使一次中断处理的过程是完整的。,四、中断响应时序CPU对可屏蔽中断请求的响应过程要执行两个连续的中断响应 总线周期,第一个中断响应总线周期,CPU通知外设准备响应中断,外设应该准备好中断类型号,第二个中断响应总线周期,CPU接收外设接口发来的中断类型号。图7-6给出了8086/
24、8088中断响应时序。,图7-6 8086/8088中断响应总线周期时序图,7-3 中断优先级和中断嵌套,在实际系统中,经常有多个中断源同时向CPU请求中断,CPU响应哪个中断源的中断请求,由中断优先级排队决定,CPU先响应优先级高的中断请求。当CPU正在处理中断时,有更高优先级别的中断请求,并且IF=1,CPU能响应更高级别的中断请求,而屏蔽掉低级的中断请求,形成了中断嵌套,或称为多重中断。一、中断优先级IBM PC机中规定优先级从高到低的次序为:内中断(除法错、INTO、INT n)不可屏蔽中断(NMI)可屏蔽中断(INTR)单步中断对于可屏蔽中断的优先级设定有三种方法:,高,低,1.软件
25、查询中断优先级软件查询中断方式,是将各个外设的中断请求信号通过或门相或后,送到CPU的INTR端,同时把几个外设的中断请求状态位组成一个端口,赋以端口号。任一外设有中断请求,CPU响应中断后进入中断处理子程序,用软件读取端口内容,逐位查询端口的每位状态,查到哪个外设有中断请求,就转入哪个外设的中断服务程序。查询程序的次序,决定了外设优先级别的高低,先测试的中断源优先级别最高。当然在软件查询程序中也可用移位或屏蔽法来改变端口各位的测试次序,但查询时间较长,对中断源较多的情况不合适。2.硬件查询优先方式菊花链法菊花链法是采用硬件查询优先的方式,它是在每个外设的对应接口上连接一个逻辑电路构成一个链,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 课件 第七 微型计算机 中断 系统
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6572850.html