微机原理与接口技术 中断系统

上传人:油条 文档编号:1275529 上传时间:2017-06-04 格式:PPT 页数:68 大小:1.20MB
返回 下载 相关 举报
微机原理与接口技术 中断系统_第1页
第1页 / 共68页
微机原理与接口技术 中断系统_第2页
第2页 / 共68页
微机原理与接口技术 中断系统_第3页
第3页 / 共68页
微机原理与接口技术 中断系统_第4页
第4页 / 共68页
微机原理与接口技术 中断系统_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《微机原理与接口技术 中断系统》由会员分享,可在线阅读,更多相关《微机原理与接口技术 中断系统(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处理完后,返回到原来打断处

3、,继续处理B的中断服务程序。图中为两级中断,还可以进行多级中断。,图6.1中断嵌套示意图,二、中断处理过程 1、中断检测 中断源向CPU发中断请求是随机的,大多数CPU在现行指令周期结束时检测有无中断请求。8086CPU在每条指令的最后一个机器周期的最后一个时钟周期检测中断请求信号输入线INTR。 2、CPU响应中断的条件 CPU检测到INTR上有中断请求,要响应它需满足以下条件: CPU开放中断,即CPU内部设置的中断允许触发器IF=1,此触发器可用开中断指令(STI)置1,用关中断指令(CLI)清0。实际上就是标志寄存器中的IF位=1,表示开放可屏蔽中断。参见图6.2。 CPU在现行指令结

4、束后响应中断,图6.2 CPU内设置中断允许触发器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

6、、中断嵌套:当CPU执行优先级较低的中断服务时,而允许响应比它优先级高的中断请求,而将正在处理的中断暂时挂起,这就是中断嵌套。,第二节 8086/8088的中断系统,一、中断分类 8086/8088的中断系统如图6.6所示。 1、外部中断 8086/8088CPU有两条引脚提供外部中断源请求中断:一条是高电平有效的可屏蔽中断INTR;另一条是正跳变有效的非屏蔽中断NMI。外部中断又称硬件中断。 可屏蔽中断:可屏蔽中断是由用户定义的外部硬件中断,受中断标志位IF的控制。 非屏蔽中断:不受中断标志位IF的控制。,图6.6 8086/8088的中断系统,TF=1,硬件中断,软件中断,2、内部中断 内

7、部中断又称软件中断,主要来自CPU内部的软件中断。 图6.6中,上部是外部的硬件中断;下部是内部的软件中断。二、中断向量表 1、中断向量的定义 所谓中断向量实际上就是中断服务程序的入口地址。每个中断类型号对应一个中断向量。中断向量占4个字节存储单元,其中前两个字节放中断向量的偏移地址(IP),且低字节在前,高字节在后;后两个字节放中断向量的段地址(CS),也是低字节在前,高字节在后。,2、中断向量表 存放中断向量的存储区称为中断向量表。通常在存储器的低地址区。 3、8086/8088的中断向量表 8086/8088有256种中断类型,类型号为0-255(或0-FFH),共有256个中断向量,每

8、个占4个存储单元,所以需要1024个字节,在存储器的最低端,地址从00000H-003FFH,这块地址空间就是中断向量表。 如图6.7所示。,图6. 7 8086/8088中断向量表,从表中,知道了中断类型号,便可计算出相应的中断向量在表中存放的位置,称为中断向量表地址,或称为中断向量指针。从中断向量表地址中取出中断向量,便得到了该中断类型号的中断服务程序入口地址。即 中断类型号4 = 中断向量指针的低地址 中断类型号4+2 = 中断向量指针的高地址 (中断向量指针的低地址) (IP) (中断向量指针的高地址) (CS)例1:中断类型号为27H 则中断向量指针的低地址= 27H 4= 9CH

9、中断向量指针的高地址= 27H 4+2= 9EH 即该中断向量存放在0000H:009CH开始的4个连续单元中。如果这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

10、-3FH):这是Intel公司为软件、硬件开发保留的中断类型,大部分用于系统中断,如20H-3FH为DOS中断调用。 供用户定义的中断(类型号40H-FFH):使用用户自己定义的中断,用户必须把该中断的中断向量填写到中断向量表中。 填写方法有两种: 用指令填写,例2:为中断类型N设置中断向量,该中断的中断服务程序的符号地址是INTHAND。movax, 0moves, ax ;中断向量表的段地址movbx, N*4 ;中断向量表的偏移地址movax, offset INTHAND ;得到INTHAND的偏 移地址movES:word PTRbx, ax ;放到中断向量表中movax, seg

11、INTHAND ;得到INTHAND的段 地址movES:word PTRbx+2, ax;放到中断向量表中INTHAND:;中断服务处理程序 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 I

12、NTHAND ;得到INTHAND的段地址movds, axmov dx, offset INTHAND;得到INTHAND的偏移地址moval, N;类型号,movah, 25H;设置中断向量int21H popdspopdx ;恢复原中断向量popds ;mov al, N ;将原中断向量写回去mov ah, 25H ;int21HretINTHAND: iret,三、外部中断 1、非屏蔽中断(NMI):不受中断标志位的控制,中断类型号为2,所以中断向量放在0000:0008开始的4个单元中。NMI中断一般用于紧急情况的处理。 2、可屏蔽中断(INTR):受中断标志位的控制,IF=1,CP

13、U才能响应INTR中断。CPU响应INTR中断时,往INTA引脚上发两个负脉冲,外设接到第二个负脉冲后,立即往数据总线上送出中断类型码,供CPU读取。 中断响应需要两个机器周期,参见图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清零 将断点保护到堆栈中。所谓断点就是指响应中断时,主程序中当前指令下面的一条指令的段寄存器CS的值和指令指针寄存器IP的值压入堆栈,先压CS,再压IP的值。 根据当前中断的中断类型码查中断向量表,得到中断向量(中断服务程序入口地址)分别装入CS和IP,从而转到相应的中断服务程序。 执行中断服务程序,结束后恢复断点,从而继续执行原来的程序。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号