《汇编语言程序设计》第十三章:中断及中断处理程序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
www.tup.com.cn
南开大学 朱耀庭
13.1.3
中断源及中断源的识别
1
查询中断识别法
2
向量中断识别法
www.tup.com.cn
南开大学 朱耀庭
1.
查询中断识别法
查询中断识别法主要是软件查询法, 查询中断识别法主要是软件查询法,在接受中断请求信号 之后,中断识别程序逐个查询连接到系统上的每个设备。 之后,中断识别程序逐个查询连接到系统上的每个设备。 当被检查设备的中断请求触发器被置位时, 当被检查设备的中断请求触发器被置位时,中断识别程序 便转向相应的中断服务程序的入口地址处。 便转向相应的中断服务程序的入口地址处。 对于中断源较多的大系统来说, 对于中断源较多的大系统来说,查询中断花费在查询上的 时间就太多了,并且还需要有附加的中断识别程序, 时间就太多了,并且还需要有附加的中断识别程序,因此 多数系统采用另一种更加方便、快速的中断识别方法—— 多数系统采用另一种更加方便、快速的中断识别方法 向量中断识别法。 向量中断识别法。
汇编语言程序设计
-------朱耀庭 ---------朱耀庭
www.tup.com.cn
第13章 中断及中断处理程序 章
中断在计算机科学中占有十分重要的地位, 中断在计算机科学中占有十分重要的地位,是计算机科学 中最基本的概念之一。 中最基本的概念之一。如果没有中断以及中断机制的引入 与应用,就不可能有计算机操作系统的出现, 与应用,就不可能有计算机操作系统的出现,也就不可能 有今天如此高效率的计算机。使用计算机时,操作健盘、 有今天如此高效率的计算机。使用计算机时,操作健盘、 移动鼠标之所以能够被计算机感知并且予以及时响应处理, 移动鼠标之所以能够被计算机感知并且予以及时响应处理, 这完全得益于计算机的中断处理。 这完全得益于计算机的中断处理。 本章将重点介绍80X86 的中断机制及中断处理程序的设计 本章将重点介绍 方法,同时还将介绍请求DOS、BIOS中断服务,以及调 中断服务, 方法,同时还将介绍请求 、 中断服务 内部功能子程序( 功能调用) 用DOS、BIOS内部功能子程序(即DOS、BIOS功能调用) 、 内部功能子程序 、 功能调用 的方法和用途等。 的方法和用途等。
中断源及中断源的识别
在中断过程中, 在中断过程中,我们称引起紧急事务的事件为中断源 计算机系统有上百种可以发出中断请求的中断源, 计算机系统有上百种可以发出中断请求的中断源,但最常 见的中断源是:外设的输入/输出请求 见的中断源是:外设的输入 输出请求 例如,键盘输入引起的中断, 例如,键盘输入引起的中断,通信端口接收信息引起的中 断等 还有一些计算机内部的异常事件,例如, 作除数 作除数、 还有一些计算机内部的异常事件 , 例如 , 0作除数、 奇偶 校验错等 80X86的常见中断源如图 的常见中断源如图13-3所示: 所示: 的常见中断源如图 所示
www.tup.com.cn
南开大学 朱耀庭
第二章 80x86实模式汇编的运行环境 实模式汇编的运行环境
13.1 中断及中断相关概念 13.2 软件中断
13.3 DOS中断服务 中断服务 13.4 BIOS中断服务 中断服务 13.5 13.6 DOS和BIOS功能调用实例 和 功能调用实例
典型的中断处理程序实例
www.tup.com.cn
南开大学 朱耀庭
13.1.2
中断向量表
中断INT 20H为例,说明 为例, 图13-2以DOS中断 以 中断 为例 说明CPU处理各类中断 处理各类中断 的过程,该过程主要包括以下5个步骤 个步骤: 的过程,该过程主要包括以下 个步骤: (1)取中断的中断类型号 ) (2)计算中断向量地址 ) 字节单元中的内容, (3)取出中断向量 字节单元中的内容,将其中两字节代 )取出中断向量4字节单元中的内容 表中断处理程序段地址的内容送入CS寄存器 寄存器, 表中断处理程序段地址的内容送入 寄存器,两字节代 表中断处理程序偏移量的内容送入IP寄存器 表中断处理程序偏移量的内容送入 寄存器 (4)转向相应的中断处理程序 ) (5)中断返回到原中断指令的下一条指令处 )
www.tup.com.cn
南开大学 朱耀庭
13.1.1
中断的基本概念
在计算机系统中, 在计算机系统中,引入中断的最初目的是为了提高系统的 输入输出性能 随着计算机应用的发展, 随着计算机应用的发展,中断技术也应用到计算机系统的 许多领域, 多道程序、分时系统、实时处理、 许多领域,如:多道程序、分时系统、实时处理、程序监 视和跟踪等领域。 视和跟踪等领域。 中断就是使中央处理器暂时挂起当前正在进行的工作程序, 中断就是使中央处理器暂时挂起当前正在进行的工作程序, 转向某紧急事件的服务与处理程序, 转向某紧急事件的服务与处理程序,并在执行完该服务与 处理程序后, 处理程序后,再返回到曾经被其中止和挂起的原有程序处 继续完成原有工作的整个过程。 继续完成原有工作的整个过程。
www.tup.com.cn
南开大学 朱耀庭
13.1.2
中断向量表
图13-1
中断向量表
www.tup.com.cn
南开大学 朱耀庭
13.1.2
中断向量表
各个中断处理程序的入口地址在中断向量表中是按中断类 型号顺序存放的,因此将中断类型号乘以4就得到对应中 型号顺序存放的 , 因此将中断类型号乘以 就得到对应中 断向量的地址。 断向量的地址。 例如,溢出中断的中断类型号为04H,则它的中断向量的 例如,溢出中断的中断类型号为 , 地址为04H×4=10H,内存地址从 开始的4个字节中 地址为 × ,内存地址从10H开始的 个字节中, 开始的 个字节中, 10H和 11H两字节中存放溢出中断程序的偏移地址, 12H 两字节中存放溢出中断程序的偏移地址, 和 两字节中存放溢出中断程序的偏移地址 两字节中存放溢出中断程序的段地址, 和13H两字节中存放溢出中断程序的段地址,在发生溢出 两字节中存放溢出中断程序的段地址 中断时,将这个偏移地址和段地址分别取出送给寄存器IP 中断时,将这个偏移地址和段地址分别取出送给寄存器 即转向溢出中断处理程序。 和CS,CPU即转向溢出中断处理程序。 , 即转向溢出中断处理程序
www.tup.com.cn
南开大学 朱耀庭
2. 向量中断识别法
向量中断识别法要求输入/输出设备提供中断信号和设备 向量中断识别法要求输入 输出设备提供中断信号和设备 的标识码,即中断向量, 的标识码,即中断向量,或者提供中断服务程序的入口地 响应了某设备的中断请求后, 址。当CPU响应了某设备的中断请求后,控制逻辑就将该 响应了某设备的中断请求后 设备的中断服务程序的地址传送至CPU,使CPU跳转到相 设备的中断服务程序的地址传送至 , 跳转到相 应的中断服务程序,进而完成中断服务。 应的中断服务程序,进而完成中断服务。 向量中断识别虽然识别中断源十分快捷, 向量中断识别虽然识别中断源十分快捷,但它需要增加硬 件的开销,因此将查询中断识别法和向量中断识别法结合 件的开销, 起来使用效果会更好。 起来使用效果会更好。目前有许多计算机系统就是这样做 的。
www.tup.com.cn
南开大学 朱耀庭
13.1.2
中断向量表
演示动画
图13-2
注意: 注意: 这里假设被中断的程序的下一条指令是“ 这里假设被中断的程序的下一条指令是“MOV AX,0”,事 , , 实上也可能是其他指令
www.tup.com.cn 南开大学 朱耀庭
中断处理过程
13.1.3
www.tup.com.cn
南开大学 朱耀庭
13.1.2
中断向量表
表13-1
中断类型号 00H~1FH 20H~3FH 40H~5FH 60H~67H 68H~6FH 70H~77H 78H~7FH 80H~0FDH 0F1H~0FFH
中断类型号和中断向量地址
中断向量地址 00000H~0007FH 00080H~000FFH 00100H~0017FH 00180H~0019FH 001A0H~001BFH 001C0H~001DFH 001E0H~001FFH 00200H~003C3H 003C4H~003FFH 中断的含义 BIOS中断向量 中断向量 DOS中断向量 中断向量 扩充BIOS中断向量 中断向量 扩充 用户中断向量 保留 I/O设备中断向量 设备中断向量 保留 BASIC 保留
Байду номын сангаас
www.tup.com.cn
南开大学 朱耀庭
13.1.2
中断向量表
在中断发生后, 在中断发生后,中断处理程序需要对因各种原因触发的相应中断进行 处理。 处理。 80X86中断系统能处理 中断系统能处理256种类型的中断,同时给每种中断安排了一 种类型的中断, 中断系统能处理 种类型的中断 个中断类型号, 号中断, 个中断类型号,即0H~0FFH号中断,每种类型的中断都有相应的中 号中断 断处理程序。 断处理程序。 如何有效地管理和保存如此多的中断及其对应的中断处理程序呢?那 如何有效地管理和保存如此多的中断及其对应的中断处理程序呢? 就是利用中断向量表。 就是利用中断向量表。 中断向量表是一个特殊的线性表, 中断向量表是一个特殊的线性表,它保存着系统所有中断服务程序的 入口地址。 入口地址。 微机系统中, 个中断向量分别对应于256种中 在80X86微机系统中,该表保存的 微机系统中 该表保存的256个中断向量分别对应于 个中断向量分别对应于 种中 断类型,每个表项占4个字节 个字节, 断类型,每个表项占 个字节,其中两个字节存放中断处理程序的段 地址,另两个字节存放中断处理程序的段内偏移量, 地址,另两个字节存放中断处理程序的段内偏移量,所以中断向量表 字节, 所示: 为1K字节,它起止于存储器中地址 字节 它起止于存储器中地址0000H~3FFH处,如图 处 如图13-1所示 所示
www.tup.com.cn 南开大学 朱耀庭
13.1
中断及中断相关概念
– 13.1.1 中断的基本概念 – 13.1.2 中断向量表 – 13.1.3 中断源及中断源的识别 – 13.1.4 中断的分类 – 13.1.5 中断处理机制 – 13.1.6 CPU响应中断的条件 响应中断的条件 – 13.1.7 中断的优先级
www.tup.com.cn
南开大学 朱耀庭
13.1.3
中断源及中断源的识别
演示动画
图13-3
80X86中断源 中断源
www.tup.com.cn
南开大学 朱耀庭
13.1.3
中断源及中断源的识别
常见的中断源大致分为CPU外部产生的中断和 外部产生的中断和CPU内部产 常见的中断源大致分为 外部产生的中断和 内部产 生的中断。其中外部中断源包括通过NMI引脚传递的非屏 生的中断。其中外部中断源包括通过 引脚传递的非屏 蔽中断请求产生的中断和通过Intel 8259A可编程中断控制 蔽中断请求产生的中断和通过 可编程中断控制 器的INTR引脚传递的由外部设备产生的中断等。CPU内 引脚传递的由外部设备产生的中断等。 器的 引脚传递的由外部设备产生的中断等 内 部中断则包括除法出错中断、单步中断、 部中断则包括除法出错中断、单步中断、INTO指令产生 指令产生 的溢出中断和程序中安排的INT n中断指令产生的中断等。 中断指令产生的中断等。 的溢出中断和程序中安排的 中断指令产生的中断等 外部设备的中断通过8259A的INTR引脚给 引脚给CPU传送中断 外部设备的中断通过 的 引脚给 传送中断 信号, 信号,8259A还可以使用级联的方式增加连接的外部设备 还可以使用级联的方式增加连接的外部设备 数目。如此多的中断源, 是如何确定INTR引脚上的 数目。如此多的中断源,CPU是如何确定 是如何确定 引脚上的 中断信号是来自中断源中的哪一个呢? 中断信号是来自中断源中的哪一个呢?CPU是通过一定的 是通过一定的 查询电路来完成的。 查询电路来完成的。
www.tup.com.cn
南开大学 朱耀庭
13.1.4
中断的分类
计算机系统有上百种中断, 计算机系统有上百种中断,如何对这些中断的类型进行划 分呢? 分呢? 由图13-3中80X86系统的常见中断源可知,可以将中断按 系统的常见中断源可知, 由图 中 系统的常见中断源可知 中断源划分为内部中断和外部中断。 中断源划分为内部中断和外部中断。 按中断源的特性,中断也可以分为硬件中断和软件中断。 按中断源的特性,中断也可以分为硬件中断和软件中断。 硬件中断按中断的屏蔽性质, 硬件中断按中断的屏蔽性质,又可以分为可屏蔽中断和不 可屏蔽中断。 可屏蔽中断。 下面详细介绍一下这几种划分以及它们之间的相互关系。 下面详细介绍一下这几种划分以及它们之间的相互关系。