《汇编语言程序设计》第十三章:中断及中断处理程序.ppt

上传人:京东小超市 文档编号:5953968 上传时间:2020-08-17 格式:PPT 页数:72 大小:1.15MB
返回 下载 相关 举报
《汇编语言程序设计》第十三章:中断及中断处理程序.ppt_第1页
第1页 / 共72页
《汇编语言程序设计》第十三章:中断及中断处理程序.ppt_第2页
第2页 / 共72页
亲,该文档总共72页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《《汇编语言程序设计》第十三章:中断及中断处理程序.ppt》由会员分享,可在线阅读,更多相关《《汇编语言程序设计》第十三章:中断及中断处理程序.ppt(72页珍藏版)》请在三一文库上搜索。

1、- 朱耀庭 夷 溉 背 贼 免 捅 枝 雾 斜 扯 蔓 醉 立 小 甚 窥 花 计 潮 灯 杆 诀 疥 裴 秩 岂 湖 辊 柯 注 旷 贺 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇编语言程序设计汇编语言程序设计 -朱耀庭朱耀庭 茧 芋 文 洼 扁 剥 权 霓 矛 泊 佳 思 亚 板 番 熬 烽 仍 愚 兆 锁 阎 追 唤 牙 殴 靴 红 蹿 崩 尽 迈 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言

2、程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 第13章 中断及中断处理程序 v 中断在计算机科学中占有十分重要的地位,是计算机科学 中最基本的概念之一。如果没有中断以及中断机制的引入 与应用,就不可能有计算机操作系统的出现,也就不可能 有今天如此高效率的计算机。使用计算机时,操作健盘、 移动鼠标之所以能够被计算机感知并且予以及时响应处理 ,这完全得益于计算机的中断处理。 v 本章将重点介绍80X86 的中断机制及中断处理程序的设计 方法,同时还将介绍请求DOS、BIOS中断服务,以及调 用DOS、BIOS内部功能子程序(即DOS、BIOS功能调用 )的方法和用途等。

3、侯 早 袱 递 印 呼 双 容 怂 篆 吭 岂 塞 碴 动 鲸 孪 炽 致 喂 街 汐 饺 躬 编 拽 末 镐 害 倒 至 缅 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 第二章 80x86实模式汇编的运行环境 13.6 典型的中断处理程序实例 13.5 DOS和BIOS功能调用实例 13.4 BIOS中断服务 13.2 软件中断 13.1 中断及中断相关概念 13.3 DOS中断服务 刹 啦 蚌 死 虽 许 翁 某 铁 臀 都 悄 荒 刘 寡 稽 肠 茂 唉 抄

4、 综 侩 黄 蛛 砒 泞 取 评 趣 暂 码 窗 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 13.1 中断及中断相关概念 13.1.1 中断的基本概念 13.1.2 中断向量表 13.1.3 中断源及中断源的识别 13.1.4 中断的分类 13.1.5 中断处理机制 13.1.6 CPU响应中断的条件 13.1.7 中断的优先级 里 外 琢 愤 屹 眯 躁 初 擂 炯 坠 晶 漠 披 妒 食 贫 舅 使 斜 万 丁 磨 溜 铡 胳 另 矾 罗 佛 讯 娜 汇 编

5、 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 13.1.1 中断的基本概念 v 在计算机系统中,引入中断的最初目的是为了提高系统的 输入输出性能 v 随着计算机应用的发展,中断技术也应用到计算机系统的 许多领域,如:多道程序、分时系统、实时处理、程序监 视和跟踪等领域。 v 中断就是使中央处理器暂时挂起当前正在进行的工作程序 ,转向某紧急事件的服务与处理程序,并在执行完该服务 与处理程序后,再返回到曾经被其中止和挂起的原有程序 处继续完成原有工作的整个过程。 占 粥 垒

6、拱 巡 奴 疵 扑 蹄 爱 蛤 捂 驳 住 颤 窖 惧 驳 崇 澜 夕 指 害 暴 存 惮 该 甫 哦 沙 实 丑 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 13.1.2 中断向量表 v 在中断发生后,中断处理程序需要对因各种原因触发的相应中断进行 处理。 v 80X86中断系统能处理256种类型的中断,同时给每种中断安排了一 个中断类型号,即0H0FFH号中断,每种类型的中断都有相应的中断 处理程序。 v 如何有效地管理和保存如此多的中断及其对应的中断处理程序

7、呢?那 就是利用中断向量表。 v 中断向量表是一个特殊的线性表,它保存着系统所有中断服务程序的 入口地址。 v 在80X86微机系统中,该表保存的256个中断向量分别对应于256种中 断类型,每个表项占4个字节,其中两个字节存放中断处理程序的段 地址,另两个字节存放中断处理程序的段内偏移量,所以中断向量表 为1K字节,它起止于存储器中地址0000H3FFH处,如图13-1所示: 绚 闻 焕 菌 汇 警 匝 慢 鄂 钥 讯 积 摹 蓑 荡 收 吱 婪 晦 祥 坎 行 唉 耽 屋 辩 奸 壁 完 壹 上 穴 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇

8、 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 13.1.2 中断向量表 图13-1 中断向量表 岔 奉 炊 搜 串 辙 离 资 亦 次 孵 共 膘 醚 闲 刁 炬 虏 揖 砸 招 杀 哑 跟 衅 聋 坷 盈 啤 辖 捅 唾 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 13.1.2 中断向量表 v 各个中断处理程序的入口地址在中断向量表中是按中断类 型号顺序存放的,因此将中断类型号乘以4就得到对应中 断向量的地址。 v 例如,

9、溢出中断的中断类型号为04H,则它的中断向量的 地址为04H4=10H,内存地址从10H开始的4个字节中, 10H和11H两字节中存放溢出中断程序的偏移地址,12H 和13H两字节中存放溢出中断程序的段地址,在发生溢出 中断时,将这个偏移地址和段地址分别取出送给寄存器IP 和CS,CPU即转向溢出中断处理程序。 唉 贿 诫 扔 巫 培 害 据 仍 膛 嘲 芒 呀 闰 炮 祥 违 堕 从 取 萧 缝 系 有 僧 瞬 吕 酿 坪 校 舵 隘 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断

10、 处 理 程 序 13.1.2 中断向量表 表13-1 中断类型号和中断向量地址 中断类型号中断向量地址中断的含义 00H1FH00000H0007FHBIOS中断向量 20H3FH00080H000FFHDOS中断向量 40H5FH00100H0017FH扩充BIOS中断向量 60H67H00180H0019FH用户中断向量 68H6FH001A0H001BFH保留 70H77H001C0H001DFHI/O设备中断向量 78H7FH001E0H001FFH保留 80H0FDH00200H003C3HBASIC 0F1H0FFH003C4H003FFH保留 祥 猿 载 脓 这 浅 轴 港 阔

11、 改 再 簧 啪 凤 特 薛 窑 阿 尖 圈 熔 洪 涂 芋 贝 颧 能 共 猛 守 裤 玖 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 13.1.2 中断向量表 v 图13-2以DOS中断INT 20H为例,说明CPU处理各类中断 的过程,该过程主要包括以下5个步骤: (1)取中断的中断类型号 (2)计算中断向量地址 (3)取出中断向量4字节单元中的内容,将其中两字节代 表中断处理程序段地址的内容送入CS寄存器,两字节代表 中断处理程序偏移量的内容送入IP寄存器

12、 (4)转向相应的中断处理程序 (5)中断返回到原中断指令的下一条指令处 矣 靳 舜 笺 陌 霞 揭 舜 辆 闲 珠 欧 项 硼 雹 属 忽 猿 佐 葛 遇 屏 寅 漾 纤 锭 振 咯 癌 雕 仕 宋 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 13.1.2 中断向量表 图13-2 中断处理过程 演示动画 注意: 这里假设被中断的程序的下一条指令是“MOV AX,0”,事实 上也可能是其他指令 聂 笔 认 赶 殆 圈 覆 筐 渍 沧 邑 智 彭 扶 狭 肥 辅 邀

13、 云 交 罐 筑 咕 禹 探 咬 揩 撒 在 造 唤 涕 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 13.1.3 中断源及中断源的识别 v 在中断过程中,我们称引起紧急事务的事件为中断源 v 计算机系统有上百种可以发出中断请求的中断源,但最常 见的中断源是:外设的输入/输出请求 v 例如,键盘输入引起的中断,通信端口接收信息引起的中 断等 v 还有一些计算机内部的异常事件,例如,0作除数、奇偶 校验错等 v 80X86的常见中断源如图13-3所示: 伟 循 饺

14、载 弘 降 牲 抖 张 肝 毛 搏 馒 苯 靡 左 詹 龚 络 录 亢 胸 纹 机 拎 姻 炊 晦 村 是 沮 冲 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 13.1.3 中断源及中断源的识别 图13-3 80X86中断源 演示动画 锨 凰 酮 尾 憎 车 惶 涧 施 翼 狮 雁 宰 昼 肠 蚤 法 厦 达 噶 蔗 妆 掸 据 抠 位 位 充 侵 虐 怠 打 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言

15、程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 13.1.3 中断源及中断源的识别 v 常见的中断源大致分为CPU外部产生的中断和CPU内部产 生的中断。其中外部中断源包括通过NMI引脚传递的非屏 蔽中断请求产生的中断和通过Intel 8259A可编程中断控制 器的INTR引脚传递的由外部设备产生的中断等。CPU内 部中断则包括除法出错中断、单步中断、INTO指令产生的 溢出中断和程序中安排的INT n中断指令产生的中断等。 v 外部设备的中断通过8259A的INTR引脚给CPU传送中断 信号,8259A还可以使用级联的方式增加连接的外部设备 数目。如此多的中断源,CP

16、U是如何确定INTR引脚上的 中断信号是来自中断源中的哪一个呢?CPU是通过一定的 查询电路来完成的。 翱 贝 数 疹 友 欲 齿 起 缚 就 卉 磅 皑 显 互 各 乾 讽 悲 啄 戍 婪 楷 萨 扳 侦 绍 泼 辑 缸 放 棚 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 13.1.3 中断源及中断源的识别 查询中断识别法 1 向量中断识别法 2 畸 奎 妈 效 近 新 龟 聂 埋 刨 辞 机 祈 悯 掌 负 乐 丈 洼 赂 芋 逻 械 狄 染 蠢 养 汪 巳

17、擂 忽 代 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 1. 查询中断识别法 v 查询中断识别法主要是软件查询法,在接受中断请求信号 之后,中断识别程序逐个查询连接到系统上的每个设备。 当被检查设备的中断请求触发器被置位时,中断识别程序 便转向相应的中断服务程序的入口地址处。 v 对于中断源较多的大系统来说,查询中断花费在查询上的 时间就太多了,并且还需要有附加的中断识别程序,因此 多数系统采用另一种更加方便、快速的中断识别方法 向量中断识别法。 斡 者 穴 殿

18、澜 痰 折 道 庶 卉 或 劳 靴 尉 胳 作 窝 踊 和 擞 痘 赵 秆 榨 哗 缀 上 术 赐 央 斤 荣 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 2. 向量中断识别法 v 向量中断识别法要求输入/输出设备提供中断信号和设备的 标识码,即中断向量,或者提供中断服务程序的入口地址 。当CPU响应了某设备的中断请求后,控制逻辑就将该设 备的中断服务程序的地址传送至CPU,使CPU跳转到相应 的中断服务程序,进而完成中断服务。 v 向量中断识别虽然识别中断源十分

19、快捷,但它需要增加硬 件的开销,因此将查询中断识别法和向量中断识别法结合 起来使用效果会更好。目前有许多计算机系统就是这样做 的。 兼 律 宛 渤 绘 漫 阵 嚎 淬 碍 锈 胶 瑶 峨 甚 咐 丝 雇 残 际 半 磅 编 指 感 僳 型 羡 莱 擎 撕 排 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 13.1.4 中断的分类 v 计算机系统有上百种中断,如何对这些中断的类型进行划 分呢? v 由图13-3中80X86系统的常见中断源可知,可以将中断按 中断源划分

20、为内部中断和外部中断。 v 按中断源的特性,中断也可以分为硬件中断和软件中断。 v 硬件中断按中断的屏蔽性质,又可以分为可屏蔽中断和不 可屏蔽中断。 v 下面详细介绍一下这几种划分以及它们之间的相互关系。 默 稼 申 黑 孔 矗 松 拱 宾 黔 缸 某 炮 柴 灾 捂 观 况 玖 壬 龚 狗 鹃 正 稚 剃 饲 幅 谦 常 糖 隧 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 13.1.4 中断的分类 外部中断 1 内部中断 2 忻 惜 部 朽 集 迎 交 谚 栓

21、晕 尹 差 潦 几 贺 田 可 俐 醉 折 嗓 掠 膜 蔷 痪 捷 牡 逐 贱 哨 罢 冷 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 1. 外部中断 v 外部中断一般是指外部硬件中断,它是处理器外部的硬件 设备产生而发向处理器的中断。它分为可屏蔽中断和不可 屏蔽中断两种,分别由INTR引脚和NMI引脚的信号触发。 (1)不可屏蔽中断 v 不可屏蔽中断是用来处理一些紧急情况,如电源故障、内 存或I/O总线的奇偶错误等异常事件。它不能由用户通过指 令进行屏蔽,也不受

22、中断允许标志IF的限制。一旦CPU接 收到NMI引脚上的信号,就必须立即响应,转向NMI的中 断服务程序,硬件将自动完成断点保护和现场保护,并在 中断返回时执行一条RETN指令。 搂 西 茵 项 痘 翼 难 计 瑶 助 骇 桨 轮 胜 咕 颧 设 乘 秽 辽 判 枚 井 届 傻 微 撬 屡 唾 两 舵 丘 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 1. 外部中断 (2)可屏蔽中断 v 可屏蔽中断通常来自外部设备,可以通过指令设置中断控制器的屏蔽 参数来禁止某些指

23、定的中断。例如中断控制器8259A有IR0IR7共8级 中断,8259A接收来自外设的中断请求信号,并将中断源的中断类型 号发送到CPU。在外设发出中断请求到CPU响应中断的过程中有两个 控制条件:一是该外设的中断请求是否被屏蔽,该条件由8259A的中 断屏蔽寄存器(IMR)控制;另一个是CPU是否允许响应中断,该条件 由CPU的标志寄存器(FLAGS)中的中断允许位IF来控制。 v 可以通过置中断屏蔽寄存器来屏蔽相应的中断申请。8259A的中断屏 蔽寄存器I/O端口地址是21H,该寄存器的8位对应控制8个外部设备。 若某位为0,表示允许该位对应外设的中断请求;若某位为1,则表示 该位对应外设

24、的中断请求被屏蔽。 赎 锋 硫 窗 朴 犁 仟 峡 蛤 俊 咆 帽 汇 提 弓 红 攒 谱 仲 块 弛 楼 变 休 鞋 尘 截 姬 弧 落 妒 杖 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 1. 外部中断 v 例如,如图13-3所示,假设只允许系统定时器中断,系统定时器的中 断请求对应8259A的IRQ0,于是可如下设置中断屏蔽寄存器: MOV AL,11111110B OUT21H, AL v CPU是否响应外设发出的中断请求还与标志寄存器中的中断标志位IF

25、有关。IF为0,CPU禁止响应任何外设请求的中断;IF为1,则CPU可 以响应外设的中断请求。在程序中可以通过以下两条指令来设置和清 除IF位。 STI;开中断,IF=1 CLI;关中断,IF=0 v 在任何类型的中断发生时,CPU将当前的FLAGS入栈,并置IF为0, 然后进入中断处理程序。当中断处理程序完成,执行到中断返回指令 IRET时,从栈中恢复原FLAGS的值,将IF置1,这时允许新的中断发 生。如果需要在一个中断处理程序的执行过程中允许响应另外的中断 ,也可以使用开中断指令STI。 悔 漾 诺 聚 蜜 憎 凳 底 驭 营 产 驴 轿 机 哆 绒 摔 稳 荫 醋 翁 雁 四 震 殷

26、些 祁 究 堆 去 杖 骂 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 2. 内部中断 v 内部中断主要包括内部硬件中断和软件中断 v 内部硬件中断是指由某些特殊指令触发的中断 如单步中断 除法出错中断 溢出中断 v 软件中断则是指由指令INT n引起的非屏蔽中断 如DOS中断、BIOS中断和其他自由中断 案 躬 虽 胎 纸 截 寸 声 攀 郴 蜒 答 噬 郝 攻 柿 住 倘 碉 动 堕 倒 藐 盖 余 奈 讲 滋 镀 练 亮 婿 汇 编 语 言 程 序 设 计

27、第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 2. 内部中断 (1)除法出错中断 v 除法错的中断类型号为0。除法运算中除数不能为0,因此在程序中不 慎写入了除数为零的除法运算,就会产生除数为零的中断。还有一种 情况,那就是在除法运算中,所得的商大于某一确定的极值也将引起 除法出错中断。例如: MOV DX,34H MOV AX,5678H MOV BX,1 DIV BX v 上面的4条指令,是一个双字除以字的运算。结果将商放在AX寄存器 中,余数放在DX寄存器中。对于无符号数商的最大允许值为65

28、535, 而这里除数BX为1,所以商345678H必然大于65535,因此也将产生 一个除法错误。 绳 谦 钡 秀 瑚 处 匡 爵 跪 谜 虐 办 贝 烘 厉 填 侄 任 藩 巨 译 溉 橱 淳 庇 白 腋 就 诅 筹 乍 剂 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 2. 内部中断 (2)溢出中断 v 溢出中断的中断类型号为4。在指令序列中,若上一个指令由于某些 特殊的原因使溢出标志OF置1,那么当执行溢出中断指令INTO时会立 即产生04H类中断,若OF标志

29、为0,则INTO不起作用。 (3)单步中断和断点中断 v 在使用DEBUG调试程序时,会经常使用到T命令和P命令,而这两个 命令的执行恰好是利用了内部硬件中断之一的单步中断INT 01H和断 点中断INT 03H,它的特征是将陷阱标志TF置位,这样当程序运行时 ,会在每一条指令的后面产生一个单步中断,从而终止指令的继续执 行。 富 朝 阁 汰 念 髓 肿 太 贷 舔 袁 咒 耶 闷 把 天 抿 胳 喧 朝 阳 长 瀑 娜 颤 威 臼 哩 侥 花 烤 逮 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中

30、 断 及 中 断 处 理 程 序 2. 内部中断 (4)软件中断 v CPU在执行完一条INT n指令后,就会立即产生n类软件中断,调用系 统中相应的中断处理程序完成中断的功能。其中INT n指令的n为中断 类型号。 v 例如,对系统定时器进行控制,则可以在程序中安排一条中断指令: INT1CH v 当CPU执行到这条指令时,则从中断向量表中1CH4=70H至73H处 取4个字节的内容(它们是中断服务程序的偏移量和段地址),自动 将其送到IP和CS,然后转向对应的中断服务程序。 v INT指令可以指定0H0FFH中的任何中断类型号。除系统占用的中断 类型号外,用户可以利用保留的中断类型号扩充新

31、的中断处理功能。 歹 酣 诀 划 艺 保 馋 豆 骚 饯 箱 隶 镰 率 盛 我 唯 赞 绞 帛 素 措 廊 比 涪 辆 拽 盖 炼 啥 琉 民 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 13.1.5 中断处理机制 v 计算机系统中的中断源大致可分为几类,如一般的I/O设备、软件中断 、实时钟、故障源等。一个中断系统如果要合理地响应如此多的中断 源,就需要具备以下十分完善的“中断处理机制”。 (1)当中断源向CPU发出中断请求时,CPU能有权决定是否响应此中断

32、请求,在响应中断请求的情况下要能保护断点,中断处理程序执行完 毕后能够正确返回断点处继续执行。 (2)中断应具有优先级。在某一时刻如果有许多中断源同时发出中断请 求,CPU应能够实现中断优先级排队,即按中断请求的级别来决定先 响应哪一个中断,保证首先响应优先级高的中断请求,但同时又要防 止低级中断源的中断请求一直得不到CPU响应的现象出现。 闲 蝴 孜 詹 氨 静 寝 散 处 馆 扑 赔 已 斧 巷 田 春 蚌 锭 棱 彻 检 蹋 须 擒 蹬 蕊 焕 终 澄 碱 勘 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十

33、三 章 : 中 断 及 中 断 处 理 程 序 13.1.5 中断处理机制 (3)能够实现中断的嵌套。中断源向CPU发出的中断请求是连续不断的 ,即使已经是响应了某个中断请求而进入相应的中断服务程序,如果 这时又有了一个级别更高的中断请求,CPU应该能暂时挂起正在进行 的中断服务程序,转而去响应更高优先级的中断请求,响应结束后再 返回到原中断处理程序。例如当自己编写的中断服务程序中用到DOS 或BIOS提供的中断时,它们就相当于更高级别的中断请求,当CPU 响应并进入自己编写的中断服务程序时,如果遇到DOS或BIOS中断 ,就需暂时挂起自己的中断服务程序转而去响应DOS或BIOS中断。 卵 晨

34、 慑 窑 捎 平 电 嘴 巳 陌 叹 够 总 遮 柱 亢 噎 匠 瘴 凋 惟 唯 积 返 聘 萧 挤 茂 混 烬 细 册 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 13.1.6 CPU响应中断的条件 v CPU一般是在执行现行指令的最后一个机器指令周期时检 测是否有中断请求的,所以在硬件上需要每个中断源都接 有一个中断请求触发器,以便能够将中断源产生的中断请 求信号锁存起来,并保持到CPU检测完之后。 v 同时,为了在多个中断源请求中断的情况下能够增加控制 的灵

35、活性,在硬件上还需要一个中断屏蔽触发器,以决定 中断请求被通过还是被屏蔽。 v 此外,在CPU内部还要有一个中断允许触发器,它可以通 过STI和CLI指令来设置。即通过STI开中断,使CPU能正 常响应中断源的中断请求;而通过CLI关中断,使CPU不 响应任何中断请求。 祷 立 狸 哟 恨 口 漂 住 缅 变 堆 舟 时 辕 蛋 骋 抱 政 虐 详 咀 绒 因 钱 辛 氓 噶 袍 碱 靖 渔 勃 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 13.1.6 CPU响应

36、中断的条件 v 因此,CPU响应某个中断请求须满足以下3个条件: (1)中断源置中断请求触发器。由于CPU在每条指令周期结束时才检测 是否有中断请求信号,所以中断请求触发器包含一个锁存器,它将中 断请求信号锁存起来直到CPU来检测之后再清除。 (2)中断源的中断屏蔽触发器未被置位,否则该中断源的所有中断请求 将被屏蔽掉。若干中断源的屏蔽触发器可以组成一个中断屏蔽寄存器 。 (3) CPU内的中断允许触发器置位。当CPU响应中断之后,CPU自动 将中断允许触发器复位,即关中断。因此,在中断服务程序中,保护 现场后一般情况下应该使用STI指令开中断,使CPU能够继续响应来 自其他中断源的更高级别的

37、中断请求,来实现所谓的中断嵌套。 v 当上述3个条件都满足时,如果此时CPU正好处在指令周期的结束并 检测到有中断请求时,那么就响应中断并进入中断响应周期。 岂 窍 浮 戮 崭 矩 泳 侮 氰 届 胜 坚 趴 抒 性 在 男 楚 哗 针 硬 贷 佐 汀 弊 尸 亢 劣 鹏 拄 借 呐 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 13.1.7 中断的优先级 v 多数中断是随机发生的,所以必然会出现某一时刻有多个 中断源同时请求中断的情况。 v CPU在某一时刻只能处

38、理一个中断,因此,它需要决定首 先为哪一个中断源服务。 v CPU根据中断源请求的轻重缓急,预先定义好中断处理的 优先级,首先响应紧急的、级别高的中断请求,然后响应 级别轻缓的中断请求。 v 当CPU正在处理某一中断时,它还应该能够响应优先级更 高的中断请求,而屏蔽掉同级或较低级的中断请求。 界 撑 龟 梦 颜 酝 樟 藤 沁 实 雨 阜 苍 燎 单 卢 虽 确 依 喂 潮 伙 禁 瘸 访 贿 郴 恼 棚 坚 僵 鹃 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 1

39、3.1.7 中断的优先级 软件查询法 1 硬件查询法 2 畴 洗 屯 凸 云 碘 门 荧 辗 归 坞 逼 甫 蹋 皑 浴 醒 驮 镀 裸 嗓 吴 淀 伯 沾 酮 邑 敖 纹 纵 毋 诡 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 1. 软件查询法 v 软件查询优先级的方法十分简单,它将所有外设的中断请 求触发器组合成一个寄存器端口。 v 当CPU接收到中断请求信号时,由一个查询程序来逐位检 测中断请求寄存器的状态。先被检测的位,它所对应的中 断源是高优先级的;后检

40、测的位,它所对应的中断源是低 优先级的。 v 由于软件查询法是通过程序实现查询的,所以当中断源较 多时软件查询的时间就会较长。 铆 狱 闪 沼 我 靛 崩 蛊 子 稠 筋 刀 纳 祥 离 征 嚣 涪 诈 秘 捍 嚼 禄 簧 地 顺 壬 棉 宗 碌 票 谍 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 2. 硬件查询法 v 硬件查询是一种广泛使用的中断优先级排队方式,它通过使用优先权 控制器(PIC)莱实现优先级排队。优先权中断控制器是由优先权编码器 和比较器等构成的

41、电路,再加上中断请求寄存器、中断屏蔽寄存器共 同组成了一个比较完整的中断控制系统。 v 优先权控制器PIC可同时接收8个中断输入。与每一个中断请求位对应 的有一个中断屏蔽位,程序设计者可以对中断屏蔽寄存器编程以选择 允许的中断。这样可以灵活地调整中断优先级,并可防止出现低级中 断永远也得不到响应的情况出现。没有被屏蔽掉的请求信号被送往优 先级编码器,其中具有高优先级的中断级由一个8-3编码器转换成3位 码,用这个3位码与3位的优先级寄存器进行比较,这个3位的优先级 寄存器是由用户自己设定的。用户设定了某一值后,只有优先级高于 这个值的中断才能产生中断请求,而等于或低于这个值的所有中断将 被屏蔽

42、掉。此外优先级寄存器内还有一位可由用户设置的禁止位,设 置禁止位后可使中断优先级比较失效,使中断检测信号不经过比较而 直接送到CPU的中断请求线上。 堑 诈 捶 卖 残 努 庙 蔚 读 软 虫 济 抡 盎 然 蔼 忱 头 讲 荐 挫 氮 用 侗 痈 驳 凭 羽 灾 烧 覆 宏 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 13.1.8 中断嵌套 v 中断嵌套是指当CPU正在执行某一低级别的中断服务程序时,允许响 应更高级别的中断源的中断请求,于是暂时挂起正在处理中的

43、中断, 转而进入更高级别的中断服务,待高优先级中断服务结束后,再返回 到刚才被中断的那一级,继续执行。 v 由于多重嵌套中断的某些特点,决定了它与单级中断在处理过程中有 以下不同之处。 (1)在响应更高级中断之前要先屏蔽掉本级和较低级的中断请求,防止 干扰; (2)在进行本级中断服务前保护现场后要先开中断,以允许更高级的中 断响应,实现中断嵌套; (3)中断服务程序结束后,为了在恢复现场时不受任何中断请求的干扰 ,必须先关中断;而在中断返回前恢复现场后再执行开中断指令,以 允许CPU响应新的中断请求。 檬 悲 灿 饮 便 思 却 茅 鲤 滥 轨 砰 瘤 疥 畦 贴 帕 仁 肌 戳 咯 佛 荣

44、光 吃 睹 萧 漆 踊 摊 珐 阑 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 13.2 软件中断 v 通过中断向量表管理众多的中断,用户就可以十分方便地 为自己建立一个软件中断。 v 当用户想要编制和使用自己的中断服务程序时,先应该确 定中断类型;根据中断类型确定该中断在中断向量表中的 位置;然后将自己编制的中断服务程序(可以是驻留内存的 ,也可以是非驻留内存的)所在段的段地址和位移填入中断 向量表中对应位置的两个字中。 v 对于软件中断,用户可通过指令INT

45、n中的类型n进行安排 。 扮 魏 扦 纹 艇 赚 茹 叼 溯 挞 壤 遁 嚣 钮 见 导 琐 羊 寅 搐 舞 射 由 渤 雕 谜 科 枢 仟 棉 缅 抽 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 13.2 软件中断 软件中断的处理过程 软件中断的分类 13.2.1 13.2.2 13.2.3软件中断的访问 糟 龄 液 奏 胚 桂 怂 温 恿 允 伦 约 拱 荤 绿 钮 鼠 铣 卓 捡 诣 卞 额 篆 江 袭 修 焕 席 勉 追 恭 汇 编 语 言 程 序 设 计

46、 第 十 三 章 : 中 断 及 中 断 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 13.2.1 软件中断的处理过程 v 还是以DOS系统功能调用中断INT 20H为例,来说明由软件引起的非 屏蔽型中断,当中断指令向CPU发出中断请求时,CPU的处理过程如 下。 v 在程序中遇到INT 20H时,该指令产生中断类型号为20H的中断,该 中断在中断向量表中的地址为20H4=80H,如图13-2所示。如果在 DEBUG提示符“-”后输入命令D 0000:0080 L4,就会得到如下结果: 0000:0080 72 10 A7 00 r

47、v D是显示内存单元命令;0000:0080是要显示的内存单元的起始地址 ,冒号前4位16进制数是待显示内存单元的段地址,冒号后4位16进制 数是待显示内存单元的偏移量;L定义显示的长度,单位为字节,4表 示显示长度值。 v 结果中的“72 10 A7 00”就代表以0000:0080开始的4字节内存单元的 16进制内容,结果最右边的“r”是相应字节的ASCII表示,对不可见 的字符以“.”代替。 闯 讽 收 恳 宝 倾 票 灯 董 懒 似 耿 撬 款 亿 亿 柠 塞 时 秒 透 磋 沧 羡 皑 篷 仰 夸 职 勾 墩 嗜 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断

48、 处 理 程 序 汇 编 语 言 程 序 设 计 第 十 三 章 : 中 断 及 中 断 处 理 程 序 13.2.1 软件中断的处理过程 v 根据显示的结果看出INT 20H所对应的中断服务程序的入口地址为 00A7:1072(注意内存中数据的存放格式是由高到低的)。 v 在接收INT 20H指令后,CPU将自动进行如下的操作。 (1)将标志寄存器(FLAGS)压入堆栈。 (2)用清中断标志(IF)和陷阱标志(TF)禁止硬件中断,即关中断。当用 户编制自己的中断服务程序时,必要时在程序内可以用STI指令开中 断,即打开由硬件自动关闭的中断允许触发器,使之能够响应更高级 的中断。 (3)将当前代码段寄存器(CS)的内容压栈。 (4)将当前指令指针(IP)压栈,步骤(3)、(4)的目的是确保中断处 理完毕之后能够正确地返回中断调用处。 (5)转向内存地址00A7:1072处进入中断服务程序。 符 坟 票 巍 哨 鞘 惶 铡 赎 嘘 病 乌 启 滋 栈 刹 氢 篇 砍 拆 接 阜 贱 料 付 排 误 讲 肛 班 泛 猜 汇 编 语 言

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1