微机原理与接口技术_第7章1

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

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

1 / 49
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功