您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 第7章_微型计算机中断系统资料
2020年3月2日星期一第1页微型计算机原理与接口技术第七章微型计算机中断系统2020年3月2日星期一第2页第七章微型计算机中断系统概述中断处理过程中断优先级和中断嵌套可编程中断控制器8259A内容提要2020年3月2日星期一第3页CPU正常运行程序时,微处理器内部事件或外设请求,引起CPU中断正在运行的程序,转去执行请求中断的外设(或内部事件)的服务子程序,执行完毕,再返回被中止的程序,这一过程称为中断。1.中断源引起中断的事件。包括外部中断和内部中断。一、中断概念2.中断响应CPU在每条指令的最后一个T周期检测INTR引脚,一旦检测到有中断请求,在满足中断响应的条件下(IF=1),响应中断,向外设发出INTA中断响应信号。并保护断点(当前CS,IP和PSW入栈),转向中断服务程序。执行完毕,CPU返回中断处,继续向下执行,称为中断返回。§7-1概述——中断概念§7-1概述2020年3月2日星期一第4页3.中断向量表CPU响应中断后,必须由中断源提供地址信息,引导程序进入中断服务子程序,这些中断服务程序的入口地址存放在中断向量表中。内存中专门开辟一个区域,存放中断向量表(也称中断矢量表)。4.中断优先级当有多个中断源请求中断时,中断系统判别中断申请的优先级,CPU响应优先级高的中断,挂起优先级低的中断。当CPU在运行中断服务子程序时,又有新的更高优先级的中断申请进入,CPU要挂起原中断进入更高级别的中断服务子程序,实现中断嵌套功能。§7-1概述——中断概念2020年3月2日星期一第5页5.中断屏蔽当中断源申请中断时,CPU可以由软件设置,使之不能响应,称为中断屏蔽。对于各种计算机系统,中断系统的构成差别很大,但都具有基本功能:⑴能实现中断响应、中断服务、中断返回、中断屏蔽;⑵能实现中断优先级排队;⑶能实现中断嵌套。§7-1概述——中断概念2020年3月2日星期一第6页二、中断分类8086/8088可以处理256种不同的中断。按产生中断的方法来分类,256种中断可以分为两大类:外部中断内部中断外部中断也称硬件中断,由外部的硬件产生,硬件中断又分成不可屏蔽中断和可屏蔽中断。如图7-1所示。§7-1概述——中断分类2020年3月2日星期一第7页NMI非屏蔽中断请求中断逻辑INTn指令INTO指令除法出错单步TF=1断点8259AINTR可屏蔽中断请求图7-18086/8088中断源§7-1概述——中断分类2020年3月2日星期一第8页外部中断⑴不可屏蔽中断请求由CPU的引脚NMI引入,采用边沿触发,上升沿之后维持两个时钟周期高电平有效。不能用软件屏蔽,一旦有不可屏蔽中断请求,如电源掉电等紧急情况,CPU必须予以响应。不可屏蔽中断请求的中断类型号为2,中断处理程序的入口地址在0段的0008H~000BH的4个单元中。§7-1概述——中断分类2020年3月2日星期一第9页⑵可屏蔽中断请求由CPU的引脚INTR引入,采用电平触发,高电平有效,INTR信号的高电平必须维持到CPU响应中断才结束。可用软件设置来屏蔽,即使外部设备有可屏蔽中断请求,CPU可以不予响应。由外部设备引起的可屏蔽中断请求要得到响应有两个条件:一个是外设中断请求未被屏蔽,一个是CPU允许响应中断。§7-1概述——中断分类2020年3月2日星期一第10页§7-1概述——中断分类2.内部中断内部中断又称为软件中断。⑴由中断指令INT引起的中断CPU执行一条INTn指令后会立即产生中断,并且调用系统中相应的中断处理程序去完成中断功能,指令中n指出了中断类型号。⑵由CPU的某些运算错误引起的中断除法错中断:类型0中断。在除法运算中,若除数为0或商超过寄存器所能表达的范围,则产生类型0中断,转入类型0中断处理。溢出中断:类型4中断,专用指令为INTO。在运算中,若溢出标志位OF置1,下面紧跟溢出中断指令INTO,则产生类型4中断;若OF为0,INTO指令不起作用。因此在加、减法运算指令后应安排一条INTO指令,否则运算产生溢出后无法向CPU发出溢出中断请求。2020年3月2日星期一第11页单步中断:类型1中断。标志位TF=1时,每条指令执行后,CPU自动产生类型1中断。产生单步中断时,CPU同样自动地将PSW、CS和IP内容入栈,然后清除TF、IF,进入单步中断处理程序,单步处理程序结束时,原来的PSW从堆栈中取出,CPU重新置成单步方式。断点中断:类型3中断。当CPU执行到断点时产生中断,同时显示当前各寄存器和有关存储器的内容及下条要执行的指令,供用户检查。设置断点即把一条断点指令INT3插入到断点设置处,CPU执行到INT3指令便产生中断。§7-1概述——中断分类2020年3月2日星期一第12页一、CPU响应中断过程1.CPU响应可屏蔽中断的三个条件外设的中断请求的是随机的,而CPU在每条指令的最后一个总线周期的最后一个T状态去采样中断请求输入线INTR,当CPU在INTR引脚上接收到一个有效的中断请求信号,而CPU内部中断允许触发器是开放的,中断接口电路中的中断屏蔽触发器未被屏蔽,则在当前指令执行完后CPU响应中断。外设提出中断申请本中断位未被屏蔽中断允许可屏蔽中断处理的过程一般分成以下几步:中断请求;中断响应;保护现场;转入执行中断服务子程序;恢复现场和中断返回。§7-2中断处理过程——CPU响应中断过程§7-2中断处理过程2020年3月2日星期一第13页取下一条指令有中断请求指令结束响应中断关中断保护断点寻找中断源执行指令转中断服务程序保护现场中断服务恢复现场开中断返回否是是否图7-2可屏蔽中断处理流程图§7-2中断处理过程——CPU响应中断过程2020年3月2日星期一第14页2.CPU响应可屏蔽中断的过程①从数据总线上读取中断类型号,将其存入内部暂存器。②将标志寄存器PSW的值入栈。③将PSW中的中断允许标志IF和单步标志TF清0,以屏蔽外部其它中断请求,避免CPU以单步方式执行中断处理子程字。④保护断点,将当前指令下面一条指令的段地址CS和指令指针IP的值入栈,中断处理完毕后,能正确返回到主程序继续执行。⑤根据中断类型号到中断向量表中找到中断向量,转入相应中断服务子程序。⑥中断处理程序结束以后,从堆栈中依次弹出IP、CS和PSW,然后返回主程序断点处,继续执行原来的程序。§7-2中断处理过程——CPU响应中断过程2020年3月2日星期一第15页3.CPU须执行完下一条指令才响应可屏蔽中断的情况①发出中断请求时,CPU正在执行封锁指令。②执行向段寄存器传送数据的指令(MOV和POP指令)。③遇STI和IRET指令。注意:当遇到等待指令或串操作指令时,允许在指令执行过程中进入中断,但在一个基本操作完成后响应中断。4.不可屏蔽中断的响应①不必判断IF是否为1,也不是由外设接口给出中断类型号,从NMI引脚进入的中断请求规定为类型2。②在运行中断子程序过程中,若NMI上有不可屏蔽中断请求进入,CPU仍能响应。§7-2中断处理过程——CPU响应中断过程2020年3月2日星期一第16页5.软件中断的响应①软件中断由程序设定,没有随机性,它不受中断允许标志位IF的影响,中断类型号由指令INTn中的n决定。②正在执行软件中断时,如果有不可屏蔽中断请求,就会在当前指令执行完后立即予以响应。③如果有可屏蔽中断请求,并且IF=1,也会在当前指令执行完后予以响应。§7-2中断处理过程——CPU响应中断过程2020年3月2日星期一第17页二、中断向量表中断向量表又称中断服务程序入口地址表。8086/8088系统允许处理256种类型的中断,对应类型号为0~FFH。在存储器的00000H~003FFH,占1K字节空间,用作存放中断向量。每个类型号占4个字节,高2个字节存放中断入口地址的段地址,低2个字节存放段内偏移地址。各个中断处理程序的段地址和段内偏移地址按中断类型号顺序存放在中断向量表中。因此由中断类型号n×4即可得到相应中断向量的地址,取4n和4n十1单元中的内容(中断入口段内偏移地址)装入指令指针寄存器IP,取4n十2和4n十3单元中内容(中断入口段地址)装入代码段寄存器CS,即可转入中断处理程序。1.中断向量表§7-2中断处理过程——中断向量表2020年3月2日星期一第18页类型255中断入口……类型32中断入口类型31中断入口……类型5中断入口类型4中断入口(溢出中断)类型3中断入口(断点中断)类型2中断入口(NMI)类型1中断入口(单步中断)类型0中断入口(除法出错)IPCSIPCSIPCS03FF07C08000000400800C010014专用中断系统使用供用户使用(224个)(5个)(27个)图8-48086/8088中断向量表§7-2中断处理过程——中断向量表2020年3月2日星期一第19页2.中断向量(中断入口地址)的设置有两种方法可为中断类型号n设置中断向量,即将中断服务程序的入口地址置入中断类型号n所对应的中断向量表中。一种方法用指令来设置,另一种方法利用DOS功能调用来设置。①用指令来设置中断服务程序的入口地址表②利用DOS功能调用来设置中断服务程序的入口地表§7-2中断处理过程——中断向量表2020年3月2日星期一第20页方法一:MOVAX,0;主程序中设置MOVES,AXMOVDI,N×4;中断类型号×4MOVAX,OFFSETINTRAD;送中断子程序的偏移地址至AXCLDSTOSW;偏移地址送到[4n],[4n+1]单元MOVAX,SEGINTRADSTOSW;段地址送到[4n+2],[4n+3]单元STI;开中断……INTRAD:……;中断服务子程序IRET①用指令来设置中断服务程序的入口地址表§7-2中断处理过程——中断向量表2020年3月2日星期一第21页方法二:MOVAX,0;主程序中设置MOVES,AXMOVBX,N×4;中断类型号×4MOVAX,OFFSETINTRAD;置偏移地址MOVES:WORDPTR[BX],AXMOVAX,SEGINTRAD;置段地址送MOVES:WORDPTR[BX+2],AXSTI;开中断……INTRAD:……;中断服务子程序IRET①用指令来设置中断服务程序的入口地址表§7-2中断处理过程——中断向量表2020年3月2日星期一第22页设置中断向量:把由AL中指定中断类型号的中断向量DS:DX,放置在中断向量表中。预置:AL=中断类型号DS:DX=中断服务程序入口地址AH=25H执行:INT21H②利用DOS功能调用来设置中断服务程序的入口地址表取中断向量:把由AL中指定中断类型号的中断向量.预置:AL=中断类型号AH=35H执行:INT21H返回:ES:BX=中断服务程序入口地址§7-2中断处理过程——中断向量表2020年3月2日星期一第23页MOVAL,N;取中断向量到ES:BXMOVAH,35HINT21HPUSHES;存原中断向量PUSHBXPUSHDSMOVAX,SEGINTRAD;设置中断向量段地址在DSMOVDS,AXMOVDX,OFFSETINTRAD;设置中断向量偏移地址在DXMOVAL,N;中断类型号n在ALMOVAH,25H;设置中断向量INT21H②利用DOS功能调用来设置中断服务程序的入口地址表§7-2中断处理过程——中断向量表2020年3月2日星期一第24页POPDS……;中断在此段程序内产生并响应POPDX;恢复原中断向量POPDSMOVAL,NMOVAH,25HINT21HRETINTRAD:……IRET②利用DOS功能调用来设置中断服务程序的入口地址表§7-2中断处理过程——中断向量表2020年3月2日星期一第25页3.中断类型号的获取①对于除法出错,单步中断,不可屏蔽中断NMI,断点中断和溢出中断,CPU分别自动提供中断类型号0~4。②对于用户自己确定的软件中断INTn,类型号由n决定。③对外部可屏蔽中断INTR,可以用可编程中断控制器8259A获得中断类型号。④对外部可屏蔽中断INTR,可用硬件电路(例如通用并行接口芯片8212)设计产生中断类
本文标题:第7章_微型计算机中断系统资料
链接地址:https://www.777doc.com/doc-4023666 .html