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

上传人(卖家):晟晟文业 文档编号:4145468 上传时间:2022-11-14 格式:PPT 页数:72 大小:1.09MB
下载 相关 举报
《汇编语言程序设计》第十三章中断及中断处理程序课件.ppt_第1页
第1页 / 共72页
《汇编语言程序设计》第十三章中断及中断处理程序课件.ppt_第2页
第2页 / 共72页
《汇编语言程序设计》第十三章中断及中断处理程序课件.ppt_第3页
第3页 / 共72页
《汇编语言程序设计》第十三章中断及中断处理程序课件.ppt_第4页
第4页 / 共72页
《汇编语言程序设计》第十三章中断及中断处理程序课件.ppt_第5页
第5页 / 共72页
点击查看更多>>
资源描述

1、-朱耀庭第第13章中断及中断处理程序章中断及中断处理程序v 中断在计算机科学中占有十分重要的地位,是计算机科学中断在计算机科学中占有十分重要的地位,是计算机科学中最基本的概念之一。如果没有中断以及中断机制的引入中最基本的概念之一。如果没有中断以及中断机制的引入与应用,就不可能有计算机操作系统的出现,也就不可能与应用,就不可能有计算机操作系统的出现,也就不可能有今天如此高效率的计算机。使用计算机时,操作健盘、有今天如此高效率的计算机。使用计算机时,操作健盘、移动鼠标之所以能够被计算机感知并且予以及时响应处理,移动鼠标之所以能够被计算机感知并且予以及时响应处理,这完全得益于计算机的中断处理。这完全

2、得益于计算机的中断处理。v 本章将重点介绍本章将重点介绍80X86 的中断机制及中断处理程序的设计的中断机制及中断处理程序的设计方法,同时还将介绍请求方法,同时还将介绍请求DOS、BIOS中断服务,以及调中断服务,以及调用用DOS、BIOS内部功能子程序(即内部功能子程序(即DOS、BIOS功能调用)功能调用)的方法和用途等。的方法和用途等。南开大学南开大学 朱耀庭朱耀庭第二章第二章 80 x86实模式汇编的运行环境实模式汇编的运行环境 13.6典型的中断处理程序实例典型的中断处理程序实例 13.5DOS和和BIOS功能调用实例功能调用实例 13.4BIOS中断服务中断服务 13.2软件中断软

3、件中断 13.1中断及中断相关概念中断及中断相关概念 13.3DOS中断服务中断服务南开大学南开大学 朱耀庭朱耀庭13.1中断及中断相关概念中断及中断相关概念 13.1.1中断的基本概念中断的基本概念 13.1.2中断向量表中断向量表 13.1.3中断源及中断源的识别中断源及中断源的识别 13.1.4中断的分类中断的分类 13.1.5中断处理机制中断处理机制 13.1.6CPU响应中断的条件响应中断的条件 13.1.7中断的优先级中断的优先级南开大学南开大学 朱耀庭朱耀庭13.1.1中断的基本概念中断的基本概念v 在计算机系统中,引入中断的最初目的是为了提高系统的在计算机系统中,引入中断的最初

4、目的是为了提高系统的输入输出性能输入输出性能v 随着计算机应用的发展,中断技术也应用到计算机系统的随着计算机应用的发展,中断技术也应用到计算机系统的许多领域,如:多道程序、分时系统、实时处理、程序监许多领域,如:多道程序、分时系统、实时处理、程序监视和跟踪等领域。视和跟踪等领域。v 中断就是使中央处理器暂时挂起当前正在进行的工作程序,中断就是使中央处理器暂时挂起当前正在进行的工作程序,转向某紧急事件的服务与处理程序,并在执行完该服务与转向某紧急事件的服务与处理程序,并在执行完该服务与处理程序后,再返回到曾经被其中止和挂起的原有程序处处理程序后,再返回到曾经被其中止和挂起的原有程序处继续完成原有

5、工作的整个过程。继续完成原有工作的整个过程。南开大学南开大学 朱耀庭朱耀庭13.1.2中断向量表中断向量表v 在中断发生后,中断处理程序需要对因各种原因触发的相应中断进行在中断发生后,中断处理程序需要对因各种原因触发的相应中断进行处理。处理。v 80X86中断系统能处理中断系统能处理256种类型的中断,同时给每种中断安排了一种类型的中断,同时给每种中断安排了一个中断类型号,即个中断类型号,即0H0FFH号中断,每种类型的中断都有相应的中号中断,每种类型的中断都有相应的中断处理程序。断处理程序。v 如何有效地管理和保存如此多的中断及其对应的中断处理程序呢?那如何有效地管理和保存如此多的中断及其对

6、应的中断处理程序呢?那就是利用中断向量表。就是利用中断向量表。v 中断向量表是一个特殊的线性表,它保存着系统所有中断服务程序的中断向量表是一个特殊的线性表,它保存着系统所有中断服务程序的入口地址。入口地址。v 在在80X86微机系统中,该表保存的微机系统中,该表保存的256个中断向量分别对应于个中断向量分别对应于256种中种中断类型,每个表项占断类型,每个表项占4个字节,其中两个字节存放中断处理程序的段个字节,其中两个字节存放中断处理程序的段地址,另两个字节存放中断处理程序的段内偏移量,所以中断向量表地址,另两个字节存放中断处理程序的段内偏移量,所以中断向量表为为1K字节,它起止于存储器中地址

7、字节,它起止于存储器中地址0000H3FFH处,如图处,如图13-1所示所示:南开大学南开大学 朱耀庭朱耀庭13.1.2中断向量表中断向量表图图13-1中断向量表中断向量表南开大学南开大学 朱耀庭朱耀庭13.1.2中断向量表中断向量表v 各个中断处理程序的入口地址在中断向量表中是按中断类各个中断处理程序的入口地址在中断向量表中是按中断类型号顺序存放的,因此将中断类型号乘以型号顺序存放的,因此将中断类型号乘以4就得到对应中就得到对应中断向量的地址。断向量的地址。v 例如,溢出中断的中断类型号为例如,溢出中断的中断类型号为04H,则它的中断向量的,则它的中断向量的地址为地址为04H4=10H,内存

8、地址从,内存地址从10H开始的开始的4个字节中,个字节中,10H和和11H两字节中存放溢出中断程序的偏移地址,两字节中存放溢出中断程序的偏移地址,12H和和13H两字节中存放溢出中断程序的段地址,在发生溢出两字节中存放溢出中断程序的段地址,在发生溢出中断时,将这个偏移地址和段地址分别取出送给寄存器中断时,将这个偏移地址和段地址分别取出送给寄存器IP和和CS,CPU即转向溢出中断处理程序。即转向溢出中断处理程序。南开大学南开大学 朱耀庭朱耀庭13.1.2中断向量表中断向量表表表13-1中断类型号和中断向量地址中断类型号和中断向量地址中断类型号中断类型号中断向量地址中断向量地址中断的含义中断的含义

9、00H1FH00000H0007FHBIOS中断向量中断向量20H3FH00080H000FFHDOS中断向量中断向量40H5FH00100H0017FH扩充扩充BIOS中断向量中断向量60H67H00180H0019FH用户中断向量用户中断向量68H6FH001A0H001BFH保留保留70H77H001C0H001DFHI/O设备中断向量设备中断向量78H7FH001E0H001FFH保留保留80H0FDH00200H003C3HBASIC0F1H0FFH003C4H003FFH保留保留南开大学南开大学 朱耀庭朱耀庭13.1.2中断向量表中断向量表v 图图13-2以以DOS中断中断INT

10、20H为例,说明为例,说明CPU处理各类中断处理各类中断的过程,该过程主要包括以下的过程,该过程主要包括以下5个步骤:个步骤:(1)取中断的中断类型号)取中断的中断类型号 (2)计算中断向量地址)计算中断向量地址 (3)取出中断向量)取出中断向量4字节单元中的内容,将其中两字节代字节单元中的内容,将其中两字节代表中断处理程序段地址的内容送入表中断处理程序段地址的内容送入CS寄存器,两字节代寄存器,两字节代表中断处理程序偏移量的内容送入表中断处理程序偏移量的内容送入IP寄存器寄存器 (4)转向相应的中断处理程序)转向相应的中断处理程序 (5)中断返回到原中断指令的下一条指令处)中断返回到原中断指

11、令的下一条指令处南开大学南开大学 朱耀庭朱耀庭13.1.2中断向量表中断向量表图图13-2中断处理过程中断处理过程演示动画演示动画注意:注意:这里假设被中断的程序的下一条指令是这里假设被中断的程序的下一条指令是“MOV AX,0”,事,事实上也可能是其他指令实上也可能是其他指令 南开大学南开大学 朱耀庭朱耀庭13.1.3中断源及中断源的识别中断源及中断源的识别v 在中断过程中,我们称引起紧急事务的事件为中断源在中断过程中,我们称引起紧急事务的事件为中断源v 计算机系统有上百种可以发出中断请求的中断源,但最常计算机系统有上百种可以发出中断请求的中断源,但最常见的中断源是:外设的输入见的中断源是:

12、外设的输入/输出请求输出请求v 例如,键盘输入引起的中断,通信端口接收信息引起的中例如,键盘输入引起的中断,通信端口接收信息引起的中断等断等v 还有一些计算机内部的异常事件,例如,还有一些计算机内部的异常事件,例如,0作除数、奇偶作除数、奇偶校验错等校验错等v 80X86的常见中断源如图的常见中断源如图13-3所示:所示:南开大学南开大学 朱耀庭朱耀庭13.1.3中断源及中断源的识别中断源及中断源的识别图图13-380X86中断源中断源演示动画演示动画南开大学南开大学 朱耀庭朱耀庭13.1.3中断源及中断源的识别中断源及中断源的识别v 常见的中断源大致分为常见的中断源大致分为CPU外部产生的中

13、断和外部产生的中断和CPU内部产内部产生的中断。其中外部中断源包括通过生的中断。其中外部中断源包括通过NMI引脚传递的非屏引脚传递的非屏蔽中断请求产生的中断和通过蔽中断请求产生的中断和通过Intel 8259A可编程中断控制可编程中断控制器的器的INTR引脚传递的由外部设备产生的中断等。引脚传递的由外部设备产生的中断等。CPU内内部中断则包括除法出错中断、单步中断、部中断则包括除法出错中断、单步中断、INTO指令产生指令产生的溢出中断和程序中安排的的溢出中断和程序中安排的INT n中断指令产生的中断等。中断指令产生的中断等。v 外部设备的中断通过外部设备的中断通过8259A的的INTR引脚给引

14、脚给CPU传送中断传送中断信号,信号,8259A还可以使用级联的方式增加连接的外部设备还可以使用级联的方式增加连接的外部设备数目。如此多的中断源,数目。如此多的中断源,CPU是如何确定是如何确定INTR引脚上的引脚上的中断信号是来自中断源中的哪一个呢?中断信号是来自中断源中的哪一个呢?CPU是通过一定的是通过一定的查询电路来完成的。查询电路来完成的。南开大学南开大学 朱耀庭朱耀庭13.1.3中断源及中断源的识别中断源及中断源的识别查询中断识别法查询中断识别法 1向量中断识别法向量中断识别法 南开大学南开大学 朱耀庭朱耀庭1.查询中断识别法查询中断识别法 v 查询中断识别法主要是软件查询法,在接

15、受中断请求信号查询中断识别法主要是软件查询法,在接受中断请求信号之后,中断识别程序逐个查询连接到系统上的每个设备。之后,中断识别程序逐个查询连接到系统上的每个设备。当被检查设备的中断请求触发器被置位时,中断识别程序当被检查设备的中断请求触发器被置位时,中断识别程序便转向相应的中断服务程序的入口地址处。便转向相应的中断服务程序的入口地址处。v 对于中断源较多的大系统来说,查询中断花费在查询上的对于中断源较多的大系统来说,查询中断花费在查询上的时间就太多了,并且还需要有附加的中断识别程序,因此时间就太多了,并且还需要有附加的中断识别程序,因此多数系统采用另一种更加方便、快速的中断识别方法多数系统采

16、用另一种更加方便、快速的中断识别方法向量中断识别法。向量中断识别法。南开大学南开大学 朱耀庭朱耀庭2.向量中断识别法向量中断识别法 v 向量中断识别法要求输入向量中断识别法要求输入/输出设备提供中断信号和设备的输出设备提供中断信号和设备的标识码,即中断向量,或者提供中断服务程序的入口地址。标识码,即中断向量,或者提供中断服务程序的入口地址。当当CPU响应了某设备的中断请求后,控制逻辑就将该设备响应了某设备的中断请求后,控制逻辑就将该设备的中断服务程序的地址传送至的中断服务程序的地址传送至CPU,使,使CPU跳转到相应的跳转到相应的中断服务程序,进而完成中断服务。中断服务程序,进而完成中断服务。

17、v 向量中断识别虽然识别中断源十分快捷,但它需要增加硬向量中断识别虽然识别中断源十分快捷,但它需要增加硬件的开销,因此将查询中断识别法和向量中断识别法结合件的开销,因此将查询中断识别法和向量中断识别法结合起来使用效果会更好。目前有许多计算机系统就是这样做起来使用效果会更好。目前有许多计算机系统就是这样做的。的。南开大学南开大学 朱耀庭朱耀庭13.1.4中断的分类中断的分类v 计算机系统有上百种中断,如何对这些中断的类型进行划计算机系统有上百种中断,如何对这些中断的类型进行划分呢?分呢?v 由图由图13-3中中80X86系统的常见中断源可知,可以将中断按系统的常见中断源可知,可以将中断按中断源划

18、分为内部中断和外部中断。中断源划分为内部中断和外部中断。v 按中断源的特性,中断也可以分为硬件中断和软件中断。按中断源的特性,中断也可以分为硬件中断和软件中断。v 硬件中断按中断的屏蔽性质,又可以分为可屏蔽中断和不硬件中断按中断的屏蔽性质,又可以分为可屏蔽中断和不可屏蔽中断。可屏蔽中断。v 下面详细介绍一下这几种划分以及它们之间的相互关系。下面详细介绍一下这几种划分以及它们之间的相互关系。南开大学南开大学 朱耀庭朱耀庭13.1.4中断的分类中断的分类外部中断外部中断 1内部中断内部中断 南开大学南开大学 朱耀庭朱耀庭1.外部中断外部中断 v 外部中断一般是指外部硬件中断,它是处理器外部的硬件外

19、部中断一般是指外部硬件中断,它是处理器外部的硬件设备产生而发向处理器的中断。它分为可屏蔽中断和不可设备产生而发向处理器的中断。它分为可屏蔽中断和不可屏蔽中断两种,分别由屏蔽中断两种,分别由INTR引脚和引脚和NMI引脚的信号触发。引脚的信号触发。(1)不可屏蔽中断)不可屏蔽中断v 不可屏蔽中断是用来处理一些紧急情况,如电源故障、内不可屏蔽中断是用来处理一些紧急情况,如电源故障、内存或存或I/O总线的奇偶错误等异常事件。它不能由用户通过总线的奇偶错误等异常事件。它不能由用户通过指令进行屏蔽,也不受中断允许标志指令进行屏蔽,也不受中断允许标志IF的限制。一旦的限制。一旦CPU接收到接收到NMI引脚

20、上的信号,就必须立即响应,转向引脚上的信号,就必须立即响应,转向NMI的的中断服务程序,硬件将自动完成断点保护和现场保护,并中断服务程序,硬件将自动完成断点保护和现场保护,并在中断返回时执行一条在中断返回时执行一条RETN指令。指令。南开大学南开大学 朱耀庭朱耀庭1.外部中断外部中断(2)可屏蔽中断)可屏蔽中断v 可屏蔽中断通常来自外部设备,可以通过指令设置中断控制器的屏蔽可屏蔽中断通常来自外部设备,可以通过指令设置中断控制器的屏蔽参数来禁止某些指定的中断。例如中断控制器参数来禁止某些指定的中断。例如中断控制器8259A有有IR0IR7共共8级级中断,中断,8259A接收来自外设的中断请求信号

21、,并将中断源的中断类型接收来自外设的中断请求信号,并将中断源的中断类型号发送到号发送到CPU。在外设发出中断请求到。在外设发出中断请求到CPU响应中断的过程中有两个响应中断的过程中有两个控制条件:一是该外设的中断请求是否被屏蔽,该条件由控制条件:一是该外设的中断请求是否被屏蔽,该条件由8259A的中的中断屏蔽寄存器断屏蔽寄存器(IMR)控制;另一个是控制;另一个是CPU是否允许响应中断,该条件是否允许响应中断,该条件由由CPU的标志寄存器的标志寄存器(FLAGS)中的中断允许位中的中断允许位IF来控制。来控制。v 可以通过置中断屏蔽寄存器来屏蔽相应的中断申请。可以通过置中断屏蔽寄存器来屏蔽相应

22、的中断申请。8259A的中断屏的中断屏蔽寄存器蔽寄存器I/O端口地址是端口地址是21H,该寄存器的,该寄存器的8位对应控制位对应控制8个外部设备。个外部设备。若某位为若某位为0,表示允许该位对应外设的中断请求;若某位为,表示允许该位对应外设的中断请求;若某位为1,则表示,则表示该位对应外设的中断请求被屏蔽。该位对应外设的中断请求被屏蔽。南开大学南开大学 朱耀庭朱耀庭1.外部中断外部中断 v 例如,如图例如,如图13-3所示,假设只允许系统定时器中断,系统定时器的中所示,假设只允许系统定时器中断,系统定时器的中断请求对应断请求对应8259A的的IRQ0,于是可如下设置中断屏蔽寄存器:,于是可如下

23、设置中断屏蔽寄存器:MOV AL,11111110B OUT 21H,ALv CPU是否响应外设发出的中断请求还与标志寄存器中的中断标志位是否响应外设发出的中断请求还与标志寄存器中的中断标志位IF有关。有关。IF为为0,CPU禁止响应任何外设请求的中断;禁止响应任何外设请求的中断;IF为为1,则,则CPU可可以响应外设的中断请求。在程序中可以通过以下两条指令来设置和清以响应外设的中断请求。在程序中可以通过以下两条指令来设置和清除除IF位。位。STI;开中断,开中断,IF=1 CLI;关中断,关中断,IF=0v 在任何类型的中断发生时,在任何类型的中断发生时,CPU将当前的将当前的FLAGS入栈

24、,并置入栈,并置IF为为0,然后进入中断处理程序。当中断处理程序完成,执行到中断返回指令然后进入中断处理程序。当中断处理程序完成,执行到中断返回指令IRET时,从栈中恢复原时,从栈中恢复原FLAGS的值,将的值,将IF置置1,这时允许新的中断发,这时允许新的中断发生。如果需要在一个中断处理程序的执行过程中允许响应另外的中断,生。如果需要在一个中断处理程序的执行过程中允许响应另外的中断,也可以使用开中断指令也可以使用开中断指令STI。南开大学南开大学 朱耀庭朱耀庭2.内部中断内部中断v 内部中断主要包括内部硬件中断和软件中断内部中断主要包括内部硬件中断和软件中断v 内部硬件中断是指由某些特殊指令

25、触发的中断内部硬件中断是指由某些特殊指令触发的中断 如单步中断如单步中断 除法出错中断除法出错中断 溢出中断溢出中断v 软件中断则是指由指令软件中断则是指由指令INT n引起的非屏蔽中断引起的非屏蔽中断 如如DOS中断、中断、BIOS中断和其他自由中断中断和其他自由中断南开大学南开大学 朱耀庭朱耀庭2.内部中断内部中断(1)除法出错中断)除法出错中断v 除法错的中断类型号为除法错的中断类型号为0。除法运算中除数不能为。除法运算中除数不能为0,因此在程序中不,因此在程序中不慎写入了除数为零的除法运算,就会产生除数为零的中断。还有一种慎写入了除数为零的除法运算,就会产生除数为零的中断。还有一种情况

26、,那就是在除法运算中,所得的商大于某一确定的极值也将引起情况,那就是在除法运算中,所得的商大于某一确定的极值也将引起除法出错中断。例如:除法出错中断。例如:MOV DX,34H MOV AX,5678H MOV BX,1 DIV BXv 上面的上面的4条指令,是一个双字除以字的运算。结果将商放在条指令,是一个双字除以字的运算。结果将商放在AX寄存器寄存器中,余数放在中,余数放在DX寄存器中。对于无符号数商的最大允许值为寄存器中。对于无符号数商的最大允许值为65535,而这里除数而这里除数BX为为1,所以商,所以商345678H必然大于必然大于65535,因此也将产生,因此也将产生一个除法错误。

27、一个除法错误。南开大学南开大学 朱耀庭朱耀庭2.内部中断内部中断(2)溢出中断)溢出中断v 溢出中断的中断类型号为溢出中断的中断类型号为4。在指令序列中,若上一个指令由于某些。在指令序列中,若上一个指令由于某些特殊的原因使溢出标志特殊的原因使溢出标志OF置置1,那么当执行溢出中断指令,那么当执行溢出中断指令INTO时会立时会立即产生即产生04H类中断,若类中断,若OF标志为标志为0,则,则INTO不起作用。不起作用。(3)单步中断和断点中断)单步中断和断点中断v 在使用在使用DEBUG调试程序时,会经常使用到调试程序时,会经常使用到T命令和命令和P命令,而这两个命令,而这两个命令的执行恰好是利

28、用了内部硬件中断之一的单步中断命令的执行恰好是利用了内部硬件中断之一的单步中断INT 01H和断和断点中断点中断INT 03H,它的特征是将陷阱标志,它的特征是将陷阱标志TF置位,这样当程序运行时,置位,这样当程序运行时,会在每一条指令的后面产生一个单步中断,从而终止指令的继续执行。会在每一条指令的后面产生一个单步中断,从而终止指令的继续执行。南开大学南开大学 朱耀庭朱耀庭2.内部中断内部中断(4)软件中断)软件中断v CPU在执行完一条在执行完一条INT n指令后,就会立即产生指令后,就会立即产生n类软件中断,调用系类软件中断,调用系统中相应的中断处理程序完成中断的功能。其中统中相应的中断处

29、理程序完成中断的功能。其中INT n指令的指令的n为中断为中断类型号。类型号。v 例如,对系统定时器进行控制,则可以在程序中安排一条中断指令:例如,对系统定时器进行控制,则可以在程序中安排一条中断指令:INT1CHv 当当CPU执行到这条指令时,则从中断向量表中执行到这条指令时,则从中断向量表中1CH4=70H至至73H处处取取4个字节的内容(它们是中断服务程序的偏移量和段地址),自动个字节的内容(它们是中断服务程序的偏移量和段地址),自动将其送到将其送到IP和和CS,然后转向对应的中断服务程序。,然后转向对应的中断服务程序。v INT指令可以指定指令可以指定0H0FFH中的任何中断类型号。除

30、系统占用的中断中的任何中断类型号。除系统占用的中断类型号外,用户可以利用保留的中断类型号扩充新的中断处理功能。类型号外,用户可以利用保留的中断类型号扩充新的中断处理功能。南开大学南开大学 朱耀庭朱耀庭13.1.5中断处理机制中断处理机制v 计算机系统中的中断源大致可分为几类,如一般的计算机系统中的中断源大致可分为几类,如一般的I/O设备、软件中断、设备、软件中断、实时钟、故障源等。一个中断系统如果要合理地响应如此多的中断源,实时钟、故障源等。一个中断系统如果要合理地响应如此多的中断源,就需要具备以下十分完善的就需要具备以下十分完善的“中断处理机制中断处理机制”。(1)当中断源向)当中断源向CP

31、U发出中断请求时,发出中断请求时,CPU能有权决定是否响应此中能有权决定是否响应此中断请求,在响应中断请求的情况下要能保护断点,中断处理程序执行断请求,在响应中断请求的情况下要能保护断点,中断处理程序执行完毕后能够正确返回断点处继续执行。完毕后能够正确返回断点处继续执行。(2)中断应具有优先级。在某一时刻如果有许多中断源同时发出中断请)中断应具有优先级。在某一时刻如果有许多中断源同时发出中断请求,求,CPU应能够实现中断优先级排队,即按中断请求的级别来决定先应能够实现中断优先级排队,即按中断请求的级别来决定先响应哪一个中断,保证首先响应优先级高的中断请求,但同时又要防响应哪一个中断,保证首先响

32、应优先级高的中断请求,但同时又要防止低级中断源的中断请求一直得不到止低级中断源的中断请求一直得不到CPU响应的现象出现。响应的现象出现。南开大学南开大学 朱耀庭朱耀庭13.1.5中断处理机制中断处理机制(3)能够实现中断的嵌套。中断源向)能够实现中断的嵌套。中断源向CPU发出的中断请求是连续不断的,发出的中断请求是连续不断的,即使已经是响应了某个中断请求而进入相应的中断服务程序,如果这即使已经是响应了某个中断请求而进入相应的中断服务程序,如果这时又有了一个级别更高的中断请求,时又有了一个级别更高的中断请求,CPU应该能暂时挂起正在进行的应该能暂时挂起正在进行的中断服务程序,转而去响应更高优先级

33、的中断请求,响应结束后再返中断服务程序,转而去响应更高优先级的中断请求,响应结束后再返回到原中断处理程序。例如当自己编写的中断服务程序中用到回到原中断处理程序。例如当自己编写的中断服务程序中用到DOS或或BIOS提供的中断时,它们就相当于更高级别的中断请求,当提供的中断时,它们就相当于更高级别的中断请求,当CPU响响应并进入自己编写的中断服务程序时,如果遇到应并进入自己编写的中断服务程序时,如果遇到DOS或或BIOS中断,中断,就需暂时挂起自己的中断服务程序转而去响应就需暂时挂起自己的中断服务程序转而去响应DOS或或BIOS中断。中断。南开大学南开大学 朱耀庭朱耀庭13.1.6CPU响应中断的

34、条件响应中断的条件v CPU一般是在执行现行指令的最后一个机器指令周期时检一般是在执行现行指令的最后一个机器指令周期时检测是否有中断请求的,所以在硬件上需要每个中断源都接测是否有中断请求的,所以在硬件上需要每个中断源都接有一个中断请求触发器,以便能够将中断源产生的中断请有一个中断请求触发器,以便能够将中断源产生的中断请求信号锁存起来,并保持到求信号锁存起来,并保持到CPU检测完之后。检测完之后。v 同时,为了在多个中断源请求中断的情况下能够增加控制同时,为了在多个中断源请求中断的情况下能够增加控制的灵活性,在硬件上还需要一个中断屏蔽触发器,以决定的灵活性,在硬件上还需要一个中断屏蔽触发器,以决

35、定中断请求被通过还是被屏蔽。中断请求被通过还是被屏蔽。v 此外,在此外,在CPU内部还要有一个中断允许触发器,它可以通内部还要有一个中断允许触发器,它可以通过过STI和和CLI指令来设置。即通过指令来设置。即通过STI开中断,使开中断,使CPU能正能正常响应中断源的中断请求;而通过常响应中断源的中断请求;而通过CLI关中断,使关中断,使CPU不不响应任何中断请求。响应任何中断请求。南开大学南开大学 朱耀庭朱耀庭13.1.6CPU响应中断的条件响应中断的条件v 因此,因此,CPU响应某个中断请求须满足以下响应某个中断请求须满足以下3个条件:个条件:(1)中断源置中断请求触发器。由于)中断源置中断

36、请求触发器。由于CPU在每条指令周期结束时才检测在每条指令周期结束时才检测是否有中断请求信号,所以中断请求触发器包含一个锁存器,它将中是否有中断请求信号,所以中断请求触发器包含一个锁存器,它将中断请求信号锁存起来直到断请求信号锁存起来直到CPU来检测之后再清除。来检测之后再清除。(2)中断源的中断屏蔽触发器未被置位,否则该中断源的所有中断请求)中断源的中断屏蔽触发器未被置位,否则该中断源的所有中断请求将被屏蔽掉。若干中断源的屏蔽触发器可以组成一个中断屏蔽寄存器。将被屏蔽掉。若干中断源的屏蔽触发器可以组成一个中断屏蔽寄存器。(3)CPU内的中断允许触发器置位。当内的中断允许触发器置位。当CPU响

37、应中断之后,响应中断之后,CPU自动自动将中断允许触发器复位,即关中断。因此,在中断服务程序中,保护将中断允许触发器复位,即关中断。因此,在中断服务程序中,保护现场后一般情况下应该使用现场后一般情况下应该使用STI指令开中断,使指令开中断,使CPU能够继续响应来能够继续响应来自其他中断源的更高级别的中断请求,来实现所谓的中断嵌套。自其他中断源的更高级别的中断请求,来实现所谓的中断嵌套。v 当上述当上述3个条件都满足时,如果此时个条件都满足时,如果此时CPU正好处在指令周期的结束并正好处在指令周期的结束并检测到有中断请求时,那么就响应中断并进入中断响应周期。检测到有中断请求时,那么就响应中断并进

38、入中断响应周期。南开大学南开大学 朱耀庭朱耀庭13.1.7中断的优先级中断的优先级v 多数中断是随机发生的,所以必然会出现某一时刻有多个多数中断是随机发生的,所以必然会出现某一时刻有多个中断源同时请求中断的情况。中断源同时请求中断的情况。v CPU在某一时刻只能处理一个中断,因此,它需要决定首在某一时刻只能处理一个中断,因此,它需要决定首先为哪一个中断源服务。先为哪一个中断源服务。v CPU根据中断源请求的轻重缓急,预先定义好中断处理的根据中断源请求的轻重缓急,预先定义好中断处理的优先级,首先响应紧急的、级别高的中断请求,然后响应优先级,首先响应紧急的、级别高的中断请求,然后响应级别轻缓的中断

39、请求。级别轻缓的中断请求。v 当当CPU正在处理某一中断时,它还应该能够响应优先级更正在处理某一中断时,它还应该能够响应优先级更高的中断请求,而屏蔽掉同级或较低级的中断请求。高的中断请求,而屏蔽掉同级或较低级的中断请求。南开大学南开大学 朱耀庭朱耀庭13.1.7中断的优先级中断的优先级软件查询法软件查询法 1硬件查询法硬件查询法 南开大学南开大学 朱耀庭朱耀庭1.软件查询法软件查询法 v 软件查询优先级的方法十分简单,它将所有外设的中断请软件查询优先级的方法十分简单,它将所有外设的中断请求触发器组合成一个寄存器端口。求触发器组合成一个寄存器端口。v 当当CPU接收到中断请求信号时,由一个查询程

40、序来逐位检接收到中断请求信号时,由一个查询程序来逐位检测中断请求寄存器的状态。先被检测的位,它所对应的中测中断请求寄存器的状态。先被检测的位,它所对应的中断源是高优先级的;后检测的位,它所对应的中断源是低断源是高优先级的;后检测的位,它所对应的中断源是低优先级的。优先级的。v 由于软件查询法是通过程序实现查询的,所以当中断源较由于软件查询法是通过程序实现查询的,所以当中断源较多时软件查询的时间就会较长。多时软件查询的时间就会较长。南开大学南开大学 朱耀庭朱耀庭2.硬件查询法硬件查询法 v 硬件查询是一种广泛使用的中断优先级排队方式,它通过使用优先权硬件查询是一种广泛使用的中断优先级排队方式,它

41、通过使用优先权控制器控制器(PIC)莱实现优先级排队。优先权中断控制器是由优先权编码器莱实现优先级排队。优先权中断控制器是由优先权编码器和比较器等构成的电路,再加上中断请求寄存器、中断屏蔽寄存器共和比较器等构成的电路,再加上中断请求寄存器、中断屏蔽寄存器共同组成了一个比较完整的中断控制系统。同组成了一个比较完整的中断控制系统。v 优先权控制器优先权控制器PIC可同时接收可同时接收8个中断输入。与每一个中断请求位对应个中断输入。与每一个中断请求位对应的有一个中断屏蔽位,程序设计者可以对中断屏蔽寄存器编程以选择的有一个中断屏蔽位,程序设计者可以对中断屏蔽寄存器编程以选择允许的中断。这样可以灵活地调

42、整中断优先级,并可防止出现低级中允许的中断。这样可以灵活地调整中断优先级,并可防止出现低级中断永远也得不到响应的情况出现。没有被屏蔽掉的请求信号被送往优断永远也得不到响应的情况出现。没有被屏蔽掉的请求信号被送往优先级编码器,其中具有高优先级的中断级由一个先级编码器,其中具有高优先级的中断级由一个8-3编码器转换成编码器转换成3位位码,用这个码,用这个3位码与位码与3位的优先级寄存器进行比较,这个位的优先级寄存器进行比较,这个3位的优先级位的优先级寄存器是由用户自己设定的。用户设定了某一值后,只有优先级高于寄存器是由用户自己设定的。用户设定了某一值后,只有优先级高于这个值的中断才能产生中断请求,

43、而等于或低于这个值的所有中断将这个值的中断才能产生中断请求,而等于或低于这个值的所有中断将被屏蔽掉。此外优先级寄存器内还有一位可由用户设置的禁止位,设被屏蔽掉。此外优先级寄存器内还有一位可由用户设置的禁止位,设置禁止位后可使中断优先级比较失效,使中断检测信号不经过比较而置禁止位后可使中断优先级比较失效,使中断检测信号不经过比较而直接送到直接送到CPU的中断请求线上。的中断请求线上。南开大学南开大学 朱耀庭朱耀庭13.1.8中断嵌套中断嵌套v 中断嵌套是指当中断嵌套是指当CPU正在执行某一低级别的中断服务程序时,允许响正在执行某一低级别的中断服务程序时,允许响应更高级别的中断源的中断请求,于是暂

44、时挂起正在处理中的中断,应更高级别的中断源的中断请求,于是暂时挂起正在处理中的中断,转而进入更高级别的中断服务,待高优先级中断服务结束后,再返回转而进入更高级别的中断服务,待高优先级中断服务结束后,再返回到刚才被中断的那一级,继续执行。到刚才被中断的那一级,继续执行。v 由于多重嵌套中断的某些特点,决定了它与单级中断在处理过程中有由于多重嵌套中断的某些特点,决定了它与单级中断在处理过程中有以下不同之处。以下不同之处。(1)在响应更高级中断之前要先屏蔽掉本级和较低级的中断请求,防止)在响应更高级中断之前要先屏蔽掉本级和较低级的中断请求,防止干扰;干扰;(2)在进行本级中断服务前保护现场后要先开中

45、断,以允许更高级的中)在进行本级中断服务前保护现场后要先开中断,以允许更高级的中断响应,实现中断嵌套;断响应,实现中断嵌套;(3)中断服务程序结束后,为了在恢复现场时不受任何中断请求的干扰,)中断服务程序结束后,为了在恢复现场时不受任何中断请求的干扰,必须先关中断;而在中断返回前恢复现场后再执行开中断指令,以允必须先关中断;而在中断返回前恢复现场后再执行开中断指令,以允许许CPU响应新的中断请求。响应新的中断请求。南开大学南开大学 朱耀庭朱耀庭13.2软件中断软件中断v 通过中断向量表管理众多的中断,用户就可以十分方便地通过中断向量表管理众多的中断,用户就可以十分方便地为自己建立一个软件中断。

46、为自己建立一个软件中断。v 当用户想要编制和使用自己的中断服务程序时,先应该确当用户想要编制和使用自己的中断服务程序时,先应该确定中断类型;根据中断类型确定该中断在中断向量表中的定中断类型;根据中断类型确定该中断在中断向量表中的位置;然后将自己编制的中断服务程序位置;然后将自己编制的中断服务程序(可以是驻留内存可以是驻留内存的,也可以是非驻留内存的的,也可以是非驻留内存的)所在段的段地址和位移填入所在段的段地址和位移填入中断向量表中对应位置的两个字中。中断向量表中对应位置的两个字中。v 对于软件中断,用户可通过指令对于软件中断,用户可通过指令INT n中的类型中的类型n进行安排。进行安排。南开

47、大学南开大学 朱耀庭朱耀庭13.2软件中断软件中断软件中断的处理过程软件中断的处理过程 软件中断的分类软件中断的分类 13.2.113.2.213.2.3软件中断的访问软件中断的访问 南开大学南开大学 朱耀庭朱耀庭13.2.1软件中断的处理过程软件中断的处理过程 v 还是以还是以DOS系统功能调用中断系统功能调用中断INT 20H为例,来说明由软件引起的非为例,来说明由软件引起的非屏蔽型中断,当中断指令向屏蔽型中断,当中断指令向CPU发出中断请求时,发出中断请求时,CPU的处理过程如的处理过程如下。下。v 在程序中遇到在程序中遇到INT 20H时,该指令产生中断类型号为时,该指令产生中断类型号

48、为20H的中断,该的中断,该中断在中断向量表中的地址为中断在中断向量表中的地址为20H4=80H,如图,如图13-2所示。如果在所示。如果在DEBUG提示符提示符“-”后输入命令后输入命令D 0000:0080 L4,就会得到如下结果:,就会得到如下结果:0000:0080 72 10 A7 00 rv D是显示内存单元命令;是显示内存单元命令;0000:0080是要显示的内存单元的起始地址,是要显示的内存单元的起始地址,冒号前冒号前4位位16进制数是待显示内存单元的段地址,冒号后进制数是待显示内存单元的段地址,冒号后4位位16进制数进制数是待显示内存单元的偏移量;是待显示内存单元的偏移量;L

49、定义显示的长度,单位为字节,定义显示的长度,单位为字节,4表示表示显示长度值。显示长度值。v 结果中的结果中的“72 10 A7 00”就代表以就代表以0000:0080开始的开始的4字节内存单元的字节内存单元的16进制内容,结果最右边的进制内容,结果最右边的“r”是相应字节的是相应字节的ASCII表示,对不可表示,对不可见的字符以见的字符以“.”代替。代替。南开大学南开大学 朱耀庭朱耀庭13.2.1软件中断的处理过程软件中断的处理过程 v 根据显示的结果看出根据显示的结果看出INT 20H所对应的中断服务程序的入口地址为所对应的中断服务程序的入口地址为00A7:1072(注意内存中数据的存放

50、格式是由高到低的注意内存中数据的存放格式是由高到低的)。v 在接收在接收INT 20H指令后,指令后,CPU将自动进行如下的操作。将自动进行如下的操作。(1)将标志寄存器)将标志寄存器(FLAGS)压入堆栈。压入堆栈。(2)用清中断标志)用清中断标志(IF)和陷阱标志和陷阱标志(TF)禁止硬件中断,即关中断。当用禁止硬件中断,即关中断。当用户编制自己的中断服务程序时,必要时在程序内可以用户编制自己的中断服务程序时,必要时在程序内可以用STI指令开中指令开中断,即打开由硬件自动关闭的中断允许触发器,使之能够响应更高级断,即打开由硬件自动关闭的中断允许触发器,使之能够响应更高级的中断。的中断。(3

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(《汇编语言程序设计》第十三章中断及中断处理程序课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|