微机原理与接口技术中断系统.ppt
《微机原理与接口技术中断系统.ppt》由会员分享,可在线阅读,更多相关《微机原理与接口技术中断系统.ppt(68页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第六章 中断系统第一节 基本概念一、中断 1、中断的定义 当CPU正常运行时,由于随机事件(内部或外部)引起CPU暂时中止正在运行的程序,转去执行请求中断的外设(或内部事件)的中断服务程序,中断服务程序结束后再返回被中止的程序,这一过程称为中断。2、中断源和中断请求 能够向CPU发出中断请求的中断来源称为中断源。I/O设备(CRT、打印机等)、数据设备(磁盘、磁带等)、实时时钟、故障信号、软件中断等都是中断源。中断源能发出中断请求信号到CPU,所以中断源中一般要求有中断请求触发器,请求信号有边沿请求和电平请求两种。3、中断系统的目的 维持系统正常工作,提高系统效率;实时处理;为故障处理作准备。
2、4、中断分类 中断分外部中断和内部中断两大类;其中外部中断分为两类:可屏蔽中断INTR,由标志寄存器中的 IF位控制;不可屏蔽中断NMI,不受IF位控制。5、中断系统功能 中断处理:发现中断请求、响应中断请求、执行中断服务程序、中断返回。中断控制:中断优先权排队、中断嵌套 当系统中有多个中断时,有可能出现两个或两个以上的中断源同时提出中断请求,这时要求CPU根据中断优先权由高到低依次处理。中断嵌套如图6.1所示。假定有两个中断源A和B,A的级别高于B,当CPU正在处理B中断时,允许A能中断B的中断处理,转去执行A的中断服务程序,在高级中断A处理完后,返回到原来打断处,继续处理B的中断服务程序。
3、图中为两级中断,还可以进行多级中断。图6.1中断嵌套示意图 二、中断处理过程 1、中断检测 中断源向CPU发中断请求是随机的,大多数CPU在现行指令周期结束时检测有无中断请求。8086CPU在每条指令的最后一个机器周期的最后一个时钟周期检测中断请求信号输入线INTR。2、CPU响应中断的条件 CPU检测到INTR上有中断请求,要响应它需满足以下条件:CPU开放中断,即CPU内部设置的中断允许触发器IF=1,此触发器可用开中断指令(STI)置1,用关中断指令(CLI)清0。实际上就是标志寄存器中的IF位=1,表示开放可屏蔽中断。参见图6.2。CPU在现行指令结束后响应中断 图6.2 CPU内设置
4、中断允许触发器IFF3、中断请求与中断屏蔽触发器 图6.3是具有中断请求与中断屏蔽的接口电路。每一个中断源都有一个中断请求触发器和一个中断屏蔽触发器。只有当该中断源不屏蔽时,它的中断请求信号才能发给CPU。图6.3 具有中断请求与中断屏蔽的接口电路 3、CPU响应中断及处理过程 满足上述条件后,CPU响应中断,转入中断周期,完成以下操作,其时序如图6.4所示。关中断:CPU响应中断时,发出中断响应信号INTA,同时内部自动地关中断(IF=0),以禁止接受其他的中断请求,以免破坏当前中断服务的现场。保留断点:把断点处的指令指针IP值和CS值压入堆栈,以便中断处理完成后正确地返回主程序断点。识别中
5、断源:识别中断源一般有查询和向量中断(类型号)两种方法。保护现场:把断点处的有关寄存器内容压入堆栈。中断服务:执行中断服务程序 图6.4 中断时序流程图图6.5 中断响应服务 及返回流程图 恢复现场:将压入堆栈的有关寄存器的内容弹出。开中断:在中断服务的最后要开中断,以便CPU能响应新的中断请求。如果实现中断嵌套,可以在中断服务程序中,在适当时候重新开放中断,以便允许响应较高级的中断。中断返回:将堆栈内的断点值弹出。上述过程如图6.5所示。三、中断优先级和中断嵌套 1、中断优先级:中断优先级一般采用软件查询或硬件中断优先级编码电路。2、中断嵌套:当CPU执行优先级较低的中断服务时,而允许响应比
6、它优先级高的中断请求,而将正在处理的中断暂时挂起,这就是中断嵌套。第二节 8086/8088的中断系统一、中断分类 8086/8088的中断系统如图6.6所示。1、外部中断 8086/8088CPU有两条引脚提供外部中断源请求中断:一条是高电平有效的可屏蔽中断INTR;另一条是正跳变有效的非屏蔽中断NMI。外部中断又称硬件中断。可屏蔽中断:可屏蔽中断是由用户定义的外部硬件中断,受中断标志位IF的控制。非屏蔽中断:不受中断标志位IF的控制。图6.6 8086/8088的中断系统TF=1 硬件中断软件中断 2、内部中断 内部中断又称软件中断,主要来自CPU内部的软件中断。图6.6中,上部是外部的硬
7、件中断;下部是内部的软件中断。二、中断向量表 1、中断向量的定义 所谓中断向量实际上就是中断服务程序的入口地址。每个中断类型号对应一个中断向量。中断向量占4个字节存储单元,其中前两个字节放中断向量的偏移地址(IP),且低字节在前,高字节在后;后两个字节放中断向量的段地址(CS),也是低字节在前,高字节在后。2、中断向量表 存放中断向量的存储区称为中断向量表。通常在存储器的低地址区。3、8086/8088的中断向量表 8086/8088有256种中断类型,类型号为0-255(或0-FFH),共有256个中断向量,每个占4个存储单元,所以需要1024个字节,在存储器的最低端,地址从00000H-0
8、03FFH,这块地址空间就是中断向量表。如图6.7所示。图6.7 8086/8088中断向量表 从表中,知道了中断类型号,便可计算出相应的中断向量在表中存放的位置,称为中断向量表地址,或称为中断向量指针。从中断向量表地址中取出中断向量,便得到了该中断类型号的中断服务程序入口地址。即 中断类型号4 =中断向量指针的低地址 中断类型号4+2=中断向量指针的高地址 (中断向量指针的低地址)(IP)(中断向量指针的高地址)(CS)例1:中断类型号为27H 则中断向量指针的低地址=27H 4=9CH 中断向量指针的高地址=27H 4+2=9EH 即该中断向量存放在0000H:009CH开始的4个连续单元
9、中。如果这4个单元中的内容如下:0000:009C 2AH 0000:009D 43H 0000:009E 65H 0000:009F 87H 则该中断类型号27H的中断向量(中断服务程序入口地址)的逻辑地址是8765H:432AH,即(CS)=8765H,(IP)=432AH;物理地址是8B97AH。4、8086/8088中断的分类 前5个是专用中断(类型0-4)类型0:除数为0中断 类型1:单步中断 类型2:NMI中断 类型3:断点中断 类型4:溢出中断 保留的中断(类型号05-3FH):这是Intel公司为软件、硬件开发保留的中断类型,大部分用于系统中断,如20H-3FH为DOS中断调用
10、。供用户定义的中断(类型号40H-FFH):使用用户自己定义的中断,用户必须把该中断的中断向量填写到中断向量表中。填写方法有两种:用指令填写 例2:为中断类型N设置中断向量,该中断的中断服务程序的符号地址是INTHAND。movax,0moves,ax ;中断向量表的段地址movbx,N*4 ;中断向量表的偏移地址movax,offset INTHAND ;得到INTHAND的偏 移地址movES:word PTRbx,ax ;放到中断向量表中movax,seg INTHAND ;得到INTHAND的段 地址movES:word PTRbx+2,ax;放到中断向量表中INTHAND:;中断服务
11、处理程序 IRET 用DOS功能调用来设置中断向量 、设置中断向量 入口参数:AH=25HAL=类型号DS:DX=中断向量 执行INT 21H 、取中断向量 入口参数:AH=35HAL=类型号 执行INT 21H 返回时ES:BX=中断向量 例3:使用DOS功能调用存取中断向量moval,Nmovah,35H;取原中断向量int21Hpush es ;保存原中断向量的段地址push bx ;保存原中断向量的偏移地址pushdsmov ax,seg INTHAND;得到INTHAND的段地址movds,axmov dx,offset INTHAND;得到INTHAND的偏移地址moval,N;类
12、型号 movah,25H;设置中断向量int21H popdspopdx;恢复原中断向量popds ;mov al,N ;将原中断向量写回去mov ah,25H ;int21HretINTHAND:iret 三、外部中断 1、非屏蔽中断(NMI):不受中断标志位的控制,中断类型号为2,所以中断向量放在0000:0008开始的4个单元中。NMI中断一般用于紧急情况的处理。2、可屏蔽中断(INTR):受中断标志位的控制,IF=1,CPU才能响应INTR中断。CPU响应INTR中断时,往INTA引脚上发两个负脉冲,外设接到第二个负脉冲后,立即往数据总线上送出中断类型码,供CPU读取。中断响应需要两个
13、机器周期,参见图6.9。四、内部中断 内部中断即软件中断,它不受IF标志的控制,但单步中断受TF标志的控制。8086/8088的中断如下表6.1所示:8086/8088中断响应需要两个总线周期 图6.9 8086/8088中断响应总线周期 表6.1 8086/8088的中断优先级五、中断响应和中断处理过程 参见图6.8所示。从图中可知,可屏蔽中断要多两个步骤,即要先判断IF是否为1,若IF=1则进入中断响应,此时CPU要读取中断类型码,然后进入所有中断都要做的事。将标志寄存器FR的内容压入堆栈,TF送TEMP保存 将中断允许标志IF和单步标志TF清零 将断点保护到堆栈中。所谓断点就是指响应中断
14、时,主程序中当前指令下面的一条指令的段寄存器CS的值和指令指针寄存器IP的值压入堆栈,先压CS,再压IP的值。根据当前中断的中断类型码查中断向量表,得到中断向量(中断服务程序入口地址)分别装入CS和IP,从而转到相应的中断服务程序。执行中断服务程序,结束后恢复断点,从而继续执行原来的程序。图中在得到中断服务程序入口地址后,查看NMI是否有,接着查看TEMP,若TEMP=1,则在中断前CPU已处于单步方式,就和NMI一样重新保护现场和断点,转入单步中断服务程序。若TEMP=0,即中断前CPU处于非单步方式,则CPU转去执行最先引起中断的中断服务程序。最后举一个例说明中断操作过程。例4:某中断类型
15、号为72H,图6.10示出了中断操作过程。取中断类型号72H;计算中断向量地址72H4=1C8H;72H4+2=1CAH;取中断服务程序入口地址的偏移量送IP,IP=2050H,段地址送CS,CS=A000H;转入中断服务程序A000H:2050H;中断返回到INT 72H指令的下一条指令MOV AX,BX。六、可屏蔽中断的过程 1、INTR中断的全过程 首先中断请求信号INTR由外部设备产生,并送到8086的INTR引脚上。如果IF=1,则在CPU完成正在执行的指令后,便开始响应中断,步骤如下:CPU读取中断类型号n。CPU 通过INTA发中断响应信号给接口,并启动中断过程。这个响应信号将使
16、发中断请求的接口把一个字节的中断类型号通过数据总线送给CPU;按先后顺序把PSW(即FR)、CS和IP压入堆栈;清除IF和TF标志;把4n+2的字存储单元中的内容读入 CS中,把4n 的字存储单元中的内容读入 IP中,即得到中断向量;CPU 从新的CS:IP值开始执行中断服务程序,若允许中断嵌套,则一般在中断服务程序中保存寄存器后,就安排一条STI指令,以便响应优先权较高的中断。在中断服务程序末尾安排一条IRET返回指令。至于不可屏蔽NMI中断,与上述操作基本类似,只是不需要读取中断类型码,因为它的中断类型码由CPU内部自动产生。2、中断类型号的获得 除法错误,单步中断,非屏蔽中断。断点中断和
17、溢出中断分别由CPU内部自动提供中断类型号(0-4)。软件中断则是从指令流中,即在第2个字节中读得中断类型号。外部中断INTR可以用不同的方法获得中断类型号,通常由硬件提供,如8259A芯片可以将中断类型号送到数据总线上,由CPU读取而获得。七、中断服务子程序的设计 设计中断服务子程序的步骤如下:(1)选择一个中断矢量。如果是硬件中断,则要使用硬件决定的中断矢量。如果是采用软件中断,即用INT n指令的方式,则可在系统保留给用户的中断矢量号中选一个中断矢量。例如选50H号中断矢量。(2)将中断子程序的入口地址置入中断矢量表的相应表项中,其置入方法有两种:一种是用数据传送指令将中断服务子程序的入
18、口的偏移地址放在中断矢量表4 n的字单元中,将中断服务子程序的入口的段地址放在中断矢量表4 n+2的字单元中。二是采用DOS功能调用,这在前面已讲过。(3)编写中断服务子程序第三节 可编程中断控制器8259A 8259A是一个可编程中断控制器,能控制8级向量中断,通过级联方式(用9片8259A),最多可构成64级向量中断系统。在8259A中能判断一个中断请求输入是否有效,是否被屏蔽和进行优先级判决,并在CPU响应中断后,将中断类型码发给CPU。一、8259A的引脚 如图6.11所示,它有28个引脚,为标准芯片,即左下角为地,右上角为电源。二、8259A的内部结构 1、数据总线缓冲器 2、读写控
19、制电路,一片8259A只占用两个端口地址,由A0来选择,其它高位地址译码输出作为片选信号CS。WRRD分别为写信号和读信号。、级联缓冲器/比较器,扩充中断用。、中断请求寄存器IRR,位寄存器,每一位对应IR0-IR7,某根线上有中断请求,则IRR中对应位置。、中断服务寄存器ISR,CPU当前正处理的IRi中断请求时,该寄存器i位置1(i=0-7)。6、中断屏蔽寄存器IMR,当IMR的第i位为1时,禁止IRi来的中断请求。7、优先级判别器PR,当有多个中断同时请求中断时,判别当前优先级最高的中断请求进入系统。8、控制电路,控制芯片内个部件协调一致地工作。三、8259A的工作方式 1、中断触发方式
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 中断 系统
限制150内