第七章 中断技术

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通常一个系统有多个中断源,而CPU同一时刻只能响 应一个中断源的请求,那么当多个中断源同时请求中断服务 时,应该先响应哪一个,有一个次序安排的问题。按中断源 的轻重缓急程度确定的优先级别,称为优先级。
优 先 级 递 增
内部中断和异常 软件中断 外部非屏蔽中断 外部可屏蔽中断

当系统具有多个中断源时,有可能同时发出请求,由 CPU按照重要性和急迫性(中断优先级别)择优响应。
一般的处理原则是: – 不同优先级同时请求,按优先级别处理。 – 低优先级中断正在处理,出现高优先级请求,转去处 理高优先级请求。 – 高优先级中断正在处理,出现低优先级请求,暂不响 应。 – 中断处理时,出现同级别请求,当前中断处理完以后 再处理新的请求。

6、 中断嵌套
当CPU正在响应某一中断源的请求,执行为其服务 的中断服务程序时,如果有优先级更高的中断源发出请求, CPU将中止正在执行的中断服务程序而转入为新的中断源 服务,等新的中断服务程序执行完后,再返回到被中止的 中断服务程序,这一过程称为中断嵌套。
10、中断标志
中断允许标志 在CPU的标志寄存器中的IF标志。表示是否可以响应 外设的中断请求。通常用1来表示允许。 在8086/8088系统中可以用CLI和STI指令来设置IF, 禁止或允许来自INTR可屏蔽中断请求引脚的中断申请。 中断请求标志 对应每个外设有一位,用来纪录外设的中断请求状态。 有请求时置1,中断处理完后清0。 在PC机中,用8259A来管理外设的中断请求,而在 8051系列的单片机中,该标志也在CPU内部。
软件中断
执行有定义的 INT n指令而引发的中断,称为软件中断
并非所有的中断号都有对应的中断服务程序 软件中断使用05H、10H~0FFH中的若干个中断号 软件中断进一步分为BIOS中断和DOS中断
外部可屏蔽中断
外部可屏蔽中断是处理器响应各种外部硬件中断的最常 用的方法,通过CPU的INTR引脚产生。外部可屏蔽中断受 处理器内部的中断允许标志位IF的控制。 处理器以电平触发方式接受INTR请求,当每条指令结束 时,若INTR为高电平且IF=1,则CPU响应相应I/O接口的中 断请求。 处理器只有一个INTR引脚可以接受外部可屏蔽中断请求, 为了管理众多的外部中断源,微机系统中采用可编程中断控 制器8259A。PC系列机通过两片8259A级连可以响应15个外 部中断源。
IRET——中断返回指令
中断服务程序的出口指令,从栈顶弹出6个字节依次写入IP、CS 和标志寄存器 在执行IRET之前必须保证栈顶是断点地址,否则执行IRET指令 将导致系统瘫痪
9、中断请求
中断源向CPU发出的中断信号。对于硬件中断源必须通 过专门的电路传送给CPU;CPU也有专门的引脚接收中断 请求信号。 8086/8088CPU用INTR引脚和NMI引脚接收硬件中断请求 信号。 对于软件中断源,在CPU内部由中断指令或程序出错直 接引发中断。
中断请求取决于事件的发生时间,而这个时间是随 机的,因此在执行程序的过程中中断程序的插入也是随 机的。这是子程序和中断处理程序的重要区别。
2、 中断用途


I/O设备信息传送控制 实时处理——实时系统中现场参数的变化随时 申请中断请求 故障处理 多用户系统的管理
3、 中断源的识别(1)
任何能够引发中断的事件都称为中断源。 查询中断方式 – 通过查询各设备的中断状态标志,确认是哪 个设备发中断,并为之服务。 – 特点:
中断嵌套可以有多级,具体级数原则上不限,只取决 于堆栈深度。
中断的优先级与中断嵌套
1#中断 服务程序 2#中断 服务程序 3#中断 服务程序
原主程序
响应
响应
响应
1#中断请求
2#中断请求 3#中断请求 返回 返回 返回
中断优先级3#>2#>1#
7、中断向量
所谓中断向量,实际上就是中断服务程088中断分类 可 屏 蔽 中 断 请 求
不可屏蔽中断请求
n=2
NMI INTR 8 2 5
……
中断控制逻辑
INT n
指令
INT O 指令 n=4
除法 出错 n=0
单步 中断 n=1
断点 中断 n=3
9
内部中断和异常
为处理器执行某些操作而引起的中断,包括: • 除法错误异常 • 单步调试中断 • 断点中断 这类中断使用了0H~09H中的若干个中断号。
一、 8259A的引脚(175页图6-1)
D0 CAS0 CAS1
GND CS WR RD D7 D2 D1
中断类型号 * 4 = 该类型入口地址的地址
习题


类型号为20H的中断所对应的中断向 量存放在0000:0080H开始的4个单元 中,如图示,则它所对应的中断服务 程序的入口地址为4030:2010H。 一个系统中对应中断类型好17H的中 断服务程序存放在2345:7890H开始的 内存区域钟,则17H对应的中断向量 存放于何处? 17H * 4 = 5CH
不论哪种中断都遵循同样的中断处理过程
当 前 中 断 源 中断 请求 程 序 程序断点 中断响应 中断
服务
程序 中断返回
中断:处理器暂停执行当前程序,转而处理随机 发生的事件,处理完毕后再返回到断点处继续执 行原来程序的过程。
主程序 中断服务程序 有中断请求 断点 继续执行 对外设 进行处理 返回断点

形成中断服务程序入口地址,转入中断服务程序执行。 每个中断的有自己的处理程序,各种微处理器形成中 断服务程序入口地址的方法也不相同。
(1)8086/8088系列 将中断服务程序的入口地址称为中断向量。将中断向量送入 CS:IP即可转入中断处理程序。 在内存的000H~3FFH的1KB空间中存有256个中断中断向量 对应于256种中断类型码,称为中断向量表。 在表中按:类型码x4即可得到中断向量的位置,取出4个 字节的中断向量。 (2)8051系列 不同中断直接对应于各固定位置的指令。
外部非屏蔽中断
为外部紧急请求提供服务的中断,通过处理器的NMI引 脚产生。 NMI输入是上升沿触发的,只要NMI输入端上出现由0到 1的跳变,一个中断服务请求就被锁存在Pentium中,与IF标 志的状态无关。
NMI有一个专用的类型号02H。
使用非屏蔽中断的典型例子是电源故障中断。
5、 中断的优先级

12、 断点与返回地址
CPU在每条指令执行的最后一个时钟周期检测中断 请求,如果响应中断的话,转去执行中断处理程序, 程序被中断的地方称为“断点”。
断点处的指令是中断处理结束后,返回时恢复执 行的第一条指令的地址称为“返回地址”。
13、 中断响应



CPU在每条指令执行的最后一个时钟周期检测中断请求, 如果以下之一,CPU自动进入中断响应周期。 (1) 有软件中断; (2) 有NMI中断信号; (3) 有INTR中断信号且CPU允许响应中断。 进入中断响应周期以后,如果是INTR,则产生INTA信号 给中断源,让中断源通过数据总线的低8位送出中断类 型码给CPU;如果是NMI,类型码是2;中断指令中有类 型码;程序出错有默认类型码。 标志寄存器进栈,清除TF和IF标志,返回地址的CS和IP 进栈。

向量中断方式
– 向量中断方式是以硬件为基础,为每个中断源提供 单独的中断入口标志(也称中断向量、中断矢量), 在CPU响应中断时,由发中断申请的中断源将中断向 量传递给CPU,CPU据此获得该中断源的服务入口地 址(实现中断源的识别)。
4、 中断的类型
PC系列微机最多可以支持256种中断,它们被分为四 种类型: • 内部中断和异常 • 软件中断 • 外部可屏蔽中断 • 外部非屏蔽中断 每个中断和异常都指定了一个类型码代表不同的优先 级。类型0表示最高优先级的中断,类型255最低优先级 的中断。
CLI——关中断指令
将标志寄存器中的中断标志位IF清0,使CPU不响应来自INTR 引脚的中断请求
INT n——软件中断指令
n为中断号。调用n号中断服务程序 ①将标志寄存器压栈 ②将TF置0,禁止单步操作,将IF置0,使CPU处于关中断状态 ③断点的CS、IP压栈 ④从中断向量表取n号中断向量 IP、CS ⑤转向n号中断服务程序
11、中断屏蔽
有些硬件中断源的请求可以根据IF标志决定是否响应, 而有些硬件中断源的请求需要一定被响应。 在8086/8088系统中,INTR是可屏蔽中断请求引脚; NMI是不可屏蔽的中断请求引脚。 在PC机系统中,通过8259A管理的外设中断源连在 CPU的INTR引脚上。在8259A内部有8位的中断申请寄存 器和8位的中断屏蔽寄存器,可以对应于8个外设的中断申 请和中断屏蔽。
中断类型码和中断向量所在位置之间的对应关系
供用户定 类型255 义的中断 (224个) 保留中断 (27个)
CS IP
0000:03FCH~0000:03FFH
类型32 类型4
CS IP
专用中断 (5个)
类型3 类型2 类型1 类型0
CS IP CS IP CS IP CS IP CS IP
0000:0010H~0000:0013 H 0000:000CH~0000:000FH 0000:0008H~0000:000B H 0000:0004H~0000:0007 H 0000:0000H~0000:0003 H
40H 0000:0083H 30H 0000:0082H
20H 0000:0081H 10H 0000:0080H 23H 0000:005FH 45H 0000:005EH 78H 0000:005DH 90H 0000:005CH
8、 中断指令
STI——开中断指令
将标志寄存器中的中断标志位IF置1,允许CPU响应来自INTR 引脚的中断请求

进入中断服务程序。通常由以下步骤组成:
(1) 保护现场,开中断; (2) 中断处理; (3) 关中断,恢复现场,开中断; (4) 用中断返回指令(IRET)返回。
第二节
可编程中断控制器8259A
8259A是一种可编程中断控制器,有如下功能:
一片Intel 8259A可管理8个中断请求,并把当前优先级 最高的中断请求送到CPU的INTR端。 当CPU响应中断时,为CPU提供中断类型码。 8个外部中断的优先级排列方式,可以通过对8259A编 程进行指定。也可以通过编程屏蔽某些中断请求,或者通 过编程改变中断优先级。 允许9片8259A级联,构成64级中断系统。 可用于8086/8088和8080/8085CPU。 在PC/AT系列微机中,使用两片8259A级联,构成15级 中断
第七章(1)
中断系统及中断控制器
中断的基本概念 可编程中断控制器8259A
中断服务程序的编写
第一节
1、什么是中断?
中断的基本概念
1956年,美国,IBM公司IBM 7049机上首先使用了中断 处理技术,并开始使用“中断”(interrupt)这一术语。 中断最初是作为处理器与外部设备交换信息的一种控 制方式提出的。由此,最初的中断全部是对外部设备而言 的,称为外部中断或硬件中断。 随着计算机技术的发展,中断的范围也随之扩大,出 现了内部软件中断的概念,它是为解决机器内部运行时出 现的异常以及为编程方便而提出的。 外部中断或硬件中断通常称为中断,软件中断或异常 中断通常称为异常(Exception)
中断类型号通过一个地址指针表与中断服务程序的入口 地址相联,在实模式下,该表称为中断向量表。 中断向量表包含256个中断向量。每个中断向量包含两 个字(4个字节),高地址字为中断服务程序所在代码段的 段基址,低地址字为代码段中中断服务程序第一条指令的偏 移量。 实模式下,中断向量表存放在内存最低端的1K单元之中, 物理地址00000H~003FFH
• • • • 查询顺序决定优先权 硬件简单 占用CPU较多的时间 中断嵌套不方便
– 查询中断流程
中断服务程序入口
保存CPU状态
读中断状态标志
Y 设备A请求中断 N 设备B请求中断 Y N 读A中断标志,转A的中断服务 读B中断标志,转B的中断服务
恢复CPU状态 中断返回
… …
查询中断流程
3、中断源的识别(2)
相关文档
最新文档