![汇编语言程序设计-第十三章中断及中断处理程序ppt课件_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-1/27/67fb6f41-59fb-46a7-b89d-c0032e3f6ce7/67fb6f41-59fb-46a7-b89d-c0032e3f6ce71.gif)
![汇编语言程序设计-第十三章中断及中断处理程序ppt课件_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-1/27/67fb6f41-59fb-46a7-b89d-c0032e3f6ce7/67fb6f41-59fb-46a7-b89d-c0032e3f6ce72.gif)
![汇编语言程序设计-第十三章中断及中断处理程序ppt课件_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-1/27/67fb6f41-59fb-46a7-b89d-c0032e3f6ce7/67fb6f41-59fb-46a7-b89d-c0032e3f6ce73.gif)
![汇编语言程序设计-第十三章中断及中断处理程序ppt课件_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-1/27/67fb6f41-59fb-46a7-b89d-c0032e3f6ce7/67fb6f41-59fb-46a7-b89d-c0032e3f6ce74.gif)
![汇编语言程序设计-第十三章中断及中断处理程序ppt课件_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-1/27/67fb6f41-59fb-46a7-b89d-c0032e3f6ce7/67fb6f41-59fb-46a7-b89d-c0032e3f6ce75.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、-朱耀庭tup第第13章中断及中断处理程序章中断及中断处理程序v 中断在计算机科学中占有十分重要的地位,是计算机科学中断在计算机科学中占有十分重要的地位,是计算机科学中最基本的概念之一。如果没有中断以及中断机制的引入中最基本的概念之一。如果没有中断以及中断机制的引入与应用,就不可能有计算机操作系统的出现,也就不可能与应用,就不可能有计算机操作系统的出现,也就不可能有今天如此高效率的计算机。使用计算机时,操作健盘、有今天如此高效率的计算机。使用计算机时,操作健盘、移动鼠标之所以能够被计算机感知并且予以及时响应处理,移动鼠标之所以能够被计算机感知并且予以及时响应处理,这完全得益于计算机的中断处理。
2、这完全得益于计算机的中断处理。v 本章将重点介绍本章将重点介绍80X86 的中断机制及中断处理程序的设计的中断机制及中断处理程序的设计方法,同时还将介绍请求方法,同时还将介绍请求DOS、BIOS中断服务,以及调中断服务,以及调用用DOS、BIOS内部功能子程序即内部功能子程序即DOS、BIOS功能调用功能调用的方法和用途等。的方法和用途等。第二章第二章 80 x86实模式汇编的运行环境实模式汇编的运行环境 13.6典型的中断处理程序实例典型的中断处理程序实例 13.5DOS和和BIOS功能调用实例功能调用实例 13.4BIOS中断服务中断服务 13.2软件中断软件中断 13.1中断及中断相关概
3、念中断及中断相关概念 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 在计算机系统中,引入中断的最初目的是为了提高系统的在计算机系统中,引入中断的最初目的是为了提高系统的输入输出性能输入输出性能v 随着计算机应用的发展,中断技术也应用到计算机
4、系统的随着计算机应用的发展,中断技术也应用到计算机系统的许多领域,如:多道程序、分时系统、实时处理、程序监许多领域,如:多道程序、分时系统、实时处理、程序监视和跟踪等领域。视和跟踪等领域。v 中断就是使中央处理器暂时挂起当前正在进行的工作程序,中断就是使中央处理器暂时挂起当前正在进行的工作程序,转向某紧急事件的服务与处理程序,并在执行完该服务与转向某紧急事件的服务与处理程序,并在执行完该服务与处理程序后,再返回到曾经被其中止和挂起的原有程序处处理程序后,再返回到曾经被其中止和挂起的原有程序处继续完成原有工作的整个过程。继续完成原有工作的整个过程。13.1.2中断向量表中断向量表v 在中断发生后
5、,中断处理程序需要对因各种原因触发的相应中断进行在中断发生后,中断处理程序需要对因各种原因触发的相应中断进行处理。处理。v 80X86中断系统能处理中断系统能处理256种类型的中断,同时给每种中断安排了一种类型的中断,同时给每种中断安排了一个中断类型号,即个中断类型号,即0H0FFH号中断,每种类型的中断都有相应的中号中断,每种类型的中断都有相应的中断处理程序。断处理程序。v 如何有效地管理和保存如此多的中断及其对应的中断处理程序呢?那如何有效地管理和保存如此多的中断及其对应的中断处理程序呢?那就是利用中断向量表。就是利用中断向量表。v 中断向量表是一个特殊的线性表,它保存着系统所有中断服务程
6、序的中断向量表是一个特殊的线性表,它保存着系统所有中断服务程序的入口地址。入口地址。v 在在80X86微机系统中,该表保存的微机系统中,该表保存的256个中断向量分别对应于个中断向量分别对应于256种中种中断类型,每个表项占断类型,每个表项占4个字节,其中两个字节存放中断处理程序的段个字节,其中两个字节存放中断处理程序的段地址,另两个字节存放中断处理程序的段内偏移量,所以中断向量表地址,另两个字节存放中断处理程序的段内偏移量,所以中断向量表为为1K字节,它起止于存储器中地址字节,它起止于存储器中地址0000H3FFH处,如图处,如图13-1所示所示:13.1.2中断向量表中断向量表图图13-1
7、中断向量表中断向量表13.1.2中断向量表中断向量表v 各个中断处理程序的入口地址在中断向量表中是按中断类各个中断处理程序的入口地址在中断向量表中是按中断类型号顺序存放的,因此将中断类型号乘以型号顺序存放的,因此将中断类型号乘以4就得到对应中就得到对应中断向量的地址。断向量的地址。v 例如,溢出中断的中断类型号为例如,溢出中断的中断类型号为04H,则它的中断向量的,则它的中断向量的地址为地址为04H4=10H,内存地址从,内存地址从10H开始的开始的4个字节中,个字节中,10H和和11H两字节中存放溢出中断程序的偏移地址,两字节中存放溢出中断程序的偏移地址,12H和和13H两字节中存放溢出中断
8、程序的段地址,在发生溢出两字节中存放溢出中断程序的段地址,在发生溢出中断时,将这个偏移地址和段地址分别取出送给寄存器中断时,将这个偏移地址和段地址分别取出送给寄存器IP和和CS,CPU即转向溢出中断处理程序。即转向溢出中断处理程序。13.1.2中断向量表中断向量表表表13-1中断类型号和中断向量地址中断类型号和中断向量地址中断类型号中断类型号中断向量地址中断向量地址中断的含义中断的含义00H1FH00000H0007FHBIOS中断向量中断向量20H3FH00080H000FFHDOS中断向量中断向量40H5FH00100H0017FH扩充扩充BIOS中断向量中断向量60H67H00180H0
9、019FH用户中断向量用户中断向量68H6FH001A0H001BFH保留保留70H77H001C0H001DFHI/O设备中断向量设备中断向量78H7FH001E0H001FFH保留保留80H0FDH00200H003C3HBASIC0F1H0FFH003C4H003FFH保留保留13.1.2中断向量表中断向量表v 图图13-2以以DOS中断中断INT 20H为例,说明为例,说明CPU处理各类中断处理各类中断的过程,该过程主要包括以下的过程,该过程主要包括以下5个步骤:个步骤:v (1取中断的中断类型号取中断的中断类型号v (2计算中断向量地址计算中断向量地址v (3取出中断向量取出中断向量
10、4字节单元中的内容,将其中两字节字节单元中的内容,将其中两字节代表中断处理程序段地址的内容送入代表中断处理程序段地址的内容送入CS寄存器,两字节寄存器,两字节代表中断处理程序偏移量的内容送入代表中断处理程序偏移量的内容送入IP寄存器寄存器v (4转向相应的中断处理程序转向相应的中断处理程序v (5中断返回到原中断指令的下一条指令处中断返回到原中断指令的下一条指令处13.1.2中断向量表中断向量表图图13-2中断处理过程中断处理过程演示动画演示动画留意:留意:这里假设被中断的程序的下一条指令是这里假设被中断的程序的下一条指令是“MOV AX,0”,事,事实上也可能是其他指令实上也可能是其他指令
11、13.1.3中断源及中断源的识别中断源及中断源的识别v 在中断过程中,我们称引起紧急事务的事件为中断源在中断过程中,我们称引起紧急事务的事件为中断源v 计算机系统有上百种可以发出中断请求的中断源,但最常计算机系统有上百种可以发出中断请求的中断源,但最常见的中断源是:外设的输入见的中断源是:外设的输入/输出请求输出请求v 例如,键盘输入引起的中断,通信端口接收信息引起的中例如,键盘输入引起的中断,通信端口接收信息引起的中断等断等v 还有一些计算机内部的异常事件,例如,还有一些计算机内部的异常事件,例如,0作除数、奇偶作除数、奇偶校验错等校验错等v 80X86的常见中断源如图的常见中断源如图13-
12、3所示:所示:13.1.3中断源及中断源的识别中断源及中断源的识别图图13-380X86中断源中断源演示动画演示动画13.1.3中断源及中断源的识别中断源及中断源的识别v 常见的中断源大致分为常见的中断源大致分为CPU外部产生的中断和外部产生的中断和CPU内部产内部产生的中断。其中外部中断源包括通过生的中断。其中外部中断源包括通过NMI引脚传递的非屏引脚传递的非屏蔽中断请求产生的中断和通过蔽中断请求产生的中断和通过Intel 8259A可编程中断控制可编程中断控制器的器的INTR引脚传递的由外部设备产生的中断等。引脚传递的由外部设备产生的中断等。CPU内内部中断则包括除法出错中断、单步中断、部
13、中断则包括除法出错中断、单步中断、INTO指令产生指令产生的溢出中断和程序中安排的的溢出中断和程序中安排的INT n中断指令产生的中断等。中断指令产生的中断等。v 外部设备的中断通过外部设备的中断通过8259A的的INTR引脚给引脚给CPU传送中断传送中断信号,信号,8259A还可以使用级联的方式增加连接的外部设备还可以使用级联的方式增加连接的外部设备数目。如此多的中断源,数目。如此多的中断源,CPU是如何确定是如何确定INTR引脚上的引脚上的中断信号是来自中断源中的哪一个呢?中断信号是来自中断源中的哪一个呢?CPU是通过一定的是通过一定的查询电路来完成的。查询电路来完成的。13.1.3中断源
14、及中断源的识别中断源及中断源的识别查询中断识别法查询中断识别法 1向量中断识别法向量中断识别法 21.查询中断识别法查询中断识别法 v 查询中断识别法主要是软件查询法,在接受中断请求信号查询中断识别法主要是软件查询法,在接受中断请求信号之后,中断识别程序逐个查询连接到系统上的每个设备。之后,中断识别程序逐个查询连接到系统上的每个设备。当被检查设备的中断请求触发器被置位时,中断识别程序当被检查设备的中断请求触发器被置位时,中断识别程序便转向相应的中断服务程序的入口地址处。便转向相应的中断服务程序的入口地址处。v 对于中断源较多的大系统来说,查询中断花费在查询上的对于中断源较多的大系统来说,查询中
15、断花费在查询上的时间就太多了,并且还需要有附加的中断识别程序,因此时间就太多了,并且还需要有附加的中断识别程序,因此多数系统采用另一种更加方便、快速的中断识别方法多数系统采用另一种更加方便、快速的中断识别方法向量中断识别法。向量中断识别法。2. 向量中断识别法向量中断识别法 v 向量中断识别法要求输入向量中断识别法要求输入/输出设备提供中断信号和设备的输出设备提供中断信号和设备的标识码,即中断向量,或者提供中断服务程序的入口地址。标识码,即中断向量,或者提供中断服务程序的入口地址。当当CPU响应了某设备的中断请求后,控制逻辑就将该设备响应了某设备的中断请求后,控制逻辑就将该设备的中断服务程序的
16、地址传送至的中断服务程序的地址传送至CPU,使,使CPU跳转到相应的跳转到相应的中断服务程序,进而完成中断服务。中断服务程序,进而完成中断服务。v 向量中断识别虽然识别中断源十分快捷,但它需要增加硬向量中断识别虽然识别中断源十分快捷,但它需要增加硬件的开销,因此将查询中断识别法和向量中断识别法结合件的开销,因此将查询中断识别法和向量中断识别法结合起来使用效果会更好。目前有许多计算机系统就是这样做起来使用效果会更好。目前有许多计算机系统就是这样做的。的。13.1.4中断的分类中断的分类v 计算机系统有上百种中断,如何对这些中断的类型进行划计算机系统有上百种中断,如何对这些中断的类型进行划分呢?分
17、呢?v 由图由图13-3中中80X86系统的常见中断源可知,可以将中断按系统的常见中断源可知,可以将中断按中断源划分为内部中断和外部中断。中断源划分为内部中断和外部中断。v 按中断源的特性,中断也可以分为硬件中断和软件中断。按中断源的特性,中断也可以分为硬件中断和软件中断。v 硬件中断按中断的屏蔽性质,又可以分为可屏蔽中断和不硬件中断按中断的屏蔽性质,又可以分为可屏蔽中断和不可屏蔽中断。可屏蔽中断。v 下面详细介绍一下这几种划分以及它们之间的相互关系。下面详细介绍一下这几种划分以及它们之间的相互关系。13.1.4中断的分类中断的分类外部中断外部中断 1内部中断内部中断 21.外部中断外部中断
18、v 外部中断一般是指外部硬件中断,它是处理器外部的硬件外部中断一般是指外部硬件中断,它是处理器外部的硬件设备产生而发向处理器的中断。它分为可屏蔽中断和不可设备产生而发向处理器的中断。它分为可屏蔽中断和不可屏蔽中断两种,分别由屏蔽中断两种,分别由INTR引脚和引脚和NMI引脚的信号触发。引脚的信号触发。v (1不可屏蔽中断不可屏蔽中断v 不可屏蔽中断是用来处理一些紧急情况,如电源故障、内不可屏蔽中断是用来处理一些紧急情况,如电源故障、内存或存或I/O总线的奇偶错误等异常事件。它不能由用户通过总线的奇偶错误等异常事件。它不能由用户通过指令进行屏蔽,也不受中断允许标志指令进行屏蔽,也不受中断允许标志
19、IF的限制。一旦的限制。一旦CPU接收到接收到NMI引脚上的信号,就必须立即响应,转向引脚上的信号,就必须立即响应,转向NMI的的中断服务程序,硬件将自动完成断点保护和现场保护,并中断服务程序,硬件将自动完成断点保护和现场保护,并在中断返回时执行一条在中断返回时执行一条RETN指令。指令。1.外部中断外部中断 (2可屏蔽中断可屏蔽中断可屏蔽中断通常来自外部设备,可以通过指令设置中断控制器的屏蔽参可屏蔽中断通常来自外部设备,可以通过指令设置中断控制器的屏蔽参数来禁止某些指定的中断。例如中断控制器数来禁止某些指定的中断。例如中断控制器8259A有有IR0IR7共共8级中级中断,断,8259A接收来
20、自外设的中断请求信号,并将中断源的中断类型号接收来自外设的中断请求信号,并将中断源的中断类型号发送到发送到CPU。在外设发出中断请求到。在外设发出中断请求到CPU响应中断的过程中有两个控响应中断的过程中有两个控制条件:一是该外设的中断请求是否被屏蔽,该条件由制条件:一是该外设的中断请求是否被屏蔽,该条件由8259A的中断的中断屏蔽寄存器屏蔽寄存器(IMR)控制;另一个是控制;另一个是CPU是否允许响应中断,该条件由是否允许响应中断,该条件由CPU的标志寄存器的标志寄存器(FLAGS)中的中断允许位中的中断允许位IF来控制。来控制。可以通过置中断屏蔽寄存器来屏蔽相应的中断申请。可以通过置中断屏蔽
21、寄存器来屏蔽相应的中断申请。8259A的中断屏蔽的中断屏蔽寄存器寄存器I/O端口地址是端口地址是21H,该寄存器的,该寄存器的8位对应控制位对应控制8个外部设备。若个外部设备。若某位为某位为0,表示允许该位对应外设的中断请求;若某位为,表示允许该位对应外设的中断请求;若某位为1,则表示该,则表示该位对应外设的中断请求被屏蔽。位对应外设的中断请求被屏蔽。1.外部中断外部中断 例如,如图例如,如图13-3所示,假设只允许系统定时器中断,系统定时器的中断所示,假设只允许系统定时器中断,系统定时器的中断请求对应请求对应8259A的的IRQ0,于是可如下设置中断屏蔽寄存器:,于是可如下设置中断屏蔽寄存器
22、: MOVAL,11111110B OUT21H, ALCPU是否响应外设发出的中断请求还与标志寄存器中的中断标志位是否响应外设发出的中断请求还与标志寄存器中的中断标志位IF有有关。关。IF为为0,CPU禁止响应任何外设请求的中断;禁止响应任何外设请求的中断;IF为为1,则,则CPU可以可以响应外设的中断请求。在程序中可以通过以下两条指令来设置和清除响应外设的中断请求。在程序中可以通过以下两条指令来设置和清除IF位。位。 STI;开中断,开中断,IF=1 CLI;关中断,关中断,IF=0在任何类型的中断发生时,在任何类型的中断发生时,CPU将当前的将当前的FLAGS入栈,并置入栈,并置IF为为
23、0,然,然后进入中断处理程序。当中断处理程序完成,执行到中断返回指令后进入中断处理程序。当中断处理程序完成,执行到中断返回指令IRET时,从栈中恢复原时,从栈中恢复原FLAGS的值,将的值,将IF置置1,这时允许新的中断发,这时允许新的中断发生。如果需要在一个中断处理程序的执行过程中允许响应另外的中断,生。如果需要在一个中断处理程序的执行过程中允许响应另外的中断,也可以使用开中断指令也可以使用开中断指令STI。2. 内部中断内部中断内部中断主要包括内部硬件中断和软件中断内部中断主要包括内部硬件中断和软件中断内部硬件中断是指由某些特殊指令触发的中断内部硬件中断是指由某些特殊指令触发的中断 如单步
24、中断如单步中断 除法出错中断除法出错中断 溢出中断溢出中断软件中断则是指由指令软件中断则是指由指令INT n引起的非屏蔽中断引起的非屏蔽中断 如如DOS中断、中断、BIOS中断和其他自由中断中断和其他自由中断2. 内部中断内部中断(1除法出错中断除法出错中断除法错的中断类型号为除法错的中断类型号为0。除法运算中除数不能为。除法运算中除数不能为0,因此在程序中不慎,因此在程序中不慎写入了除数为零的除法运算,就会产生除数为零的中断。还有一种情写入了除数为零的除法运算,就会产生除数为零的中断。还有一种情况,那就是在除法运算中,所得的商大于某一确定的极值也将引起除况,那就是在除法运算中,所得的商大于某
25、一确定的极值也将引起除法出错中断。例如:法出错中断。例如: MOV DX,34H MOV AX,5678H MOV BX,1 DIV BX上面的上面的4条指令,是一个双字除以字的运算。结果将商放在条指令,是一个双字除以字的运算。结果将商放在AX寄存器中,寄存器中,余数放在余数放在DX寄存器中。对于无符号数商的最大允许值为寄存器中。对于无符号数商的最大允许值为65535,而这,而这里除数里除数BX为为1,所以商,所以商345678H必然大于必然大于65535,因此也将产生一个,因此也将产生一个除法错误。除法错误。2. 内部中断内部中断(2溢出中断溢出中断溢出中断的中断类型号为溢出中断的中断类型号
26、为4。在指令序列中,若上一个指令由于某些特殊。在指令序列中,若上一个指令由于某些特殊的原因使溢出标志的原因使溢出标志OF置置1,那么当执行溢出中断指令,那么当执行溢出中断指令INTO时会立即产时会立即产生生04H类中断,若类中断,若OF标志为标志为0,则,则INTO不起作用。不起作用。(3单步中断和断点中断单步中断和断点中断在使用在使用DEBUG调试程序时,会经常使用到调试程序时,会经常使用到T命令和命令和P命令,而这两个命命令,而这两个命令的执行恰好是利用了内部硬件中断之一的单步中断令的执行恰好是利用了内部硬件中断之一的单步中断INT 01H和断点和断点中断中断INT 03H,它的特征是将陷
27、阱标志,它的特征是将陷阱标志TF置位,这样当程序运行时,置位,这样当程序运行时,会在每一条指令的后面产生一个单步中断,从而终止指令的继续执行。会在每一条指令的后面产生一个单步中断,从而终止指令的继续执行。2. 内部中断内部中断(4软件中断软件中断CPU在执行完一条在执行完一条INT n指令后,就会立即产生指令后,就会立即产生n类软件中断,调用系统类软件中断,调用系统中相应的中断处理程序完成中断的功能。其中中相应的中断处理程序完成中断的功能。其中INT n指令的指令的n为中断类为中断类型号。型号。例如,对系统定时器进行控制,则可以在程序中安排一条中断指令:例如,对系统定时器进行控制,则可以在程序
28、中安排一条中断指令: INT1CH当当CPU执行到这条指令时,则从中断向量表中执行到这条指令时,则从中断向量表中1CH4=70H至至73H处取处取4个字节的内容它们是中断服务程序的偏移量和段地址),自动将其个字节的内容它们是中断服务程序的偏移量和段地址),自动将其送到送到IP和和CS,然后转向对应的中断服务程序。,然后转向对应的中断服务程序。INT指令可以指定指令可以指定0H0FFH中的任何中断类型号。除系统占用的中断类中的任何中断类型号。除系统占用的中断类型号外,用户可以利用保留的中断类型号扩充新的中断处理功能。型号外,用户可以利用保留的中断类型号扩充新的中断处理功能。13.1.5中断处理机
29、制中断处理机制计算机系统中的中断源大致可分为几类,如一般的计算机系统中的中断源大致可分为几类,如一般的I/O设备、软件中断、设备、软件中断、实时钟、故障源等。一个中断系统如果要合理地响应如此多的中断源,实时钟、故障源等。一个中断系统如果要合理地响应如此多的中断源,就需要具备以下十分完善的就需要具备以下十分完善的“中断处理机制中断处理机制”。(1当中断源向当中断源向CPU发出中断请求时,发出中断请求时,CPU能有权决定是否响应此中能有权决定是否响应此中断请求,在响应中断请求的情况下要能保护断点,中断处理程序执行断请求,在响应中断请求的情况下要能保护断点,中断处理程序执行完毕后能够正确返回断点处继
30、续执行。完毕后能够正确返回断点处继续执行。(2中断应具有优先级。在某一时刻如果有许多中断源同时发出中断请中断应具有优先级。在某一时刻如果有许多中断源同时发出中断请求,求,CPU应能够实现中断优先级排队,即按中断请求的级别来决定先应能够实现中断优先级排队,即按中断请求的级别来决定先响应哪一个中断,保证首先响应优先级高的中断请求,但同时又要防响应哪一个中断,保证首先响应优先级高的中断请求,但同时又要防止低级中断源的中断请求一直得不到止低级中断源的中断请求一直得不到CPU响应的现象出现。响应的现象出现。13.1.5中断处理机制中断处理机制(3能够实现中断的嵌套。中断源向能够实现中断的嵌套。中断源向C
31、PU发出的中断请求是连续不断的,发出的中断请求是连续不断的,即使已经是响应了某个中断请求而进入相应的中断服务程序,如果这即使已经是响应了某个中断请求而进入相应的中断服务程序,如果这时又有了一个级别更高的中断请求,时又有了一个级别更高的中断请求,CPU应该能暂时挂起正在进行的应该能暂时挂起正在进行的中断服务程序,转而去响应更高优先级的中断请求,响应结束后再返中断服务程序,转而去响应更高优先级的中断请求,响应结束后再返回到原中断处理程序。例如当自己编写的中断服务程序中用到回到原中断处理程序。例如当自己编写的中断服务程序中用到DOS或或BIOS提供的中断时,它们就相当于更高级别的中断请求,当提供的中
32、断时,它们就相当于更高级别的中断请求,当CPU响响应并进入自己编写的中断服务程序时,如果遇到应并进入自己编写的中断服务程序时,如果遇到DOS或或BIOS中断,中断,就需暂时挂起自己的中断服务程序转而去响应就需暂时挂起自己的中断服务程序转而去响应DOS或或BIOS中断。中断。13.1.6CPU响应中断的条件响应中断的条件v CPU一般是在执行现行指令的最后一个机器指令周期时检一般是在执行现行指令的最后一个机器指令周期时检测是否有中断请求的,所以在硬件上需要每个中断源都接测是否有中断请求的,所以在硬件上需要每个中断源都接有一个中断请求触发器,以便能够将中断源产生的中断请有一个中断请求触发器,以便能
33、够将中断源产生的中断请求信号锁存起来,并保持到求信号锁存起来,并保持到CPU检测完之后。检测完之后。v 同时,为了在多个中断源请求中断的情况下能够增加控制同时,为了在多个中断源请求中断的情况下能够增加控制的灵活性,在硬件上还需要一个中断屏蔽触发器,以决定的灵活性,在硬件上还需要一个中断屏蔽触发器,以决定中断请求被通过还是被屏蔽。中断请求被通过还是被屏蔽。v 此外,在此外,在CPU内部还要有一个中断允许触发器,它可以通内部还要有一个中断允许触发器,它可以通过过STI和和CLI指令来设置。即通过指令来设置。即通过STI开中断,使开中断,使CPU能正能正常响应中断源的中断请求;而通过常响应中断源的中
34、断请求;而通过CLI关中断,使关中断,使CPU不不响应任何中断请求。响应任何中断请求。13.1.6CPU响应中断的条件响应中断的条件v 因此,因此,CPU响应某个中断请求须满足以下响应某个中断请求须满足以下3个条件:个条件:v (1中断源置中断请求触发器。由于中断源置中断请求触发器。由于CPU在每条指令周期结束时才在每条指令周期结束时才检测是否有中断请求信号,所以中断请求触发器包含一个锁存器,它检测是否有中断请求信号,所以中断请求触发器包含一个锁存器,它将中断请求信号锁存起来直到将中断请求信号锁存起来直到CPU来检测之后再清除。来检测之后再清除。v (2中断源的中断屏蔽触发器未被置位,否则该中
35、断源的所有中断中断源的中断屏蔽触发器未被置位,否则该中断源的所有中断请求将被屏蔽掉。若干中断源的屏蔽触发器可以组成一个中断屏蔽寄请求将被屏蔽掉。若干中断源的屏蔽触发器可以组成一个中断屏蔽寄存器。存器。v (3) CPU内的中断允许触发器置位。当内的中断允许触发器置位。当CPU响应中断之后,响应中断之后,CPU自自动将中断允许触发器复位,即关中断。因此,在中断服务程序中,保动将中断允许触发器复位,即关中断。因此,在中断服务程序中,保护现场后一般情况下应该使用护现场后一般情况下应该使用STI指令开中断,使指令开中断,使CPU能够继续响应能够继续响应来自其他中断源的更高级别的中断请求,来实现所谓的中
36、断嵌套。来自其他中断源的更高级别的中断请求,来实现所谓的中断嵌套。v 当上述当上述3个条件都满足时,如果此时个条件都满足时,如果此时CPU正好处在指令周期的结束并正好处在指令周期的结束并检测到有中断请求时,那么就响应中断并进入中断响应周期。检测到有中断请求时,那么就响应中断并进入中断响应周期。13.1.7中断的优先级中断的优先级v 多数中断是随机发生的,所以必然会出现某一时刻有多个多数中断是随机发生的,所以必然会出现某一时刻有多个中断源同时请求中断的情况。中断源同时请求中断的情况。v CPU在某一时刻只能处理一个中断,因此,它需要决定首在某一时刻只能处理一个中断,因此,它需要决定首先为哪一个中
37、断源服务。先为哪一个中断源服务。v CPU根据中断源请求的轻重缓急,预先定义好中断处理的根据中断源请求的轻重缓急,预先定义好中断处理的优先级,首先响应紧急的、级别高的中断请求,然后响应优先级,首先响应紧急的、级别高的中断请求,然后响应级别轻缓的中断请求。级别轻缓的中断请求。v 当当CPU正在处理某一中断时,它还应该能够响应优先级更正在处理某一中断时,它还应该能够响应优先级更高的中断请求,而屏蔽掉同级或较低级的中断请求。高的中断请求,而屏蔽掉同级或较低级的中断请求。13.1.7中断的优先级中断的优先级软件查询法软件查询法 1硬件查询法硬件查询法 21.软件查询法软件查询法 v 软件查询优先级的方
38、法十分简单,它将所有外设的中断请软件查询优先级的方法十分简单,它将所有外设的中断请求触发器组合成一个寄存器端口。求触发器组合成一个寄存器端口。v 当当CPU接收到中断请求信号时,由一个查询程序来逐位检接收到中断请求信号时,由一个查询程序来逐位检测中断请求寄存器的状态。先被检测的位,它所对应的中测中断请求寄存器的状态。先被检测的位,它所对应的中断源是高优先级的;后检测的位,它所对应的中断源是低断源是高优先级的;后检测的位,它所对应的中断源是低优先级的。优先级的。v 由于软件查询法是通过程序实现查询的,所以当中断源较由于软件查询法是通过程序实现查询的,所以当中断源较多时软件查询的时间就会较长。多时
39、软件查询的时间就会较长。 2. 硬件查询法硬件查询法 v 硬件查询是一种广泛使用的中断优先级排队方式,它通过使用优先权硬件查询是一种广泛使用的中断优先级排队方式,它通过使用优先权控制器控制器(PIC)莱实现优先级排队。优先权中断控制器是由优先权编码器莱实现优先级排队。优先权中断控制器是由优先权编码器和比较器等构成的电路,再加上中断请求寄存器、中断屏蔽寄存器共和比较器等构成的电路,再加上中断请求寄存器、中断屏蔽寄存器共同组成了一个比较完整的中断控制系统。同组成了一个比较完整的中断控制系统。v 优先权控制器优先权控制器PIC可同时接收可同时接收8个中断输入。与每一个中断请求位对应个中断输入。与每一
40、个中断请求位对应的有一个中断屏蔽位,程序设计者可以对中断屏蔽寄存器编程以选择的有一个中断屏蔽位,程序设计者可以对中断屏蔽寄存器编程以选择允许的中断。这样可以灵活地调整中断优先级,并可防止出现低级中允许的中断。这样可以灵活地调整中断优先级,并可防止出现低级中断永远也得不到响应的情况出现。没有被屏蔽掉的请求信号被送往优断永远也得不到响应的情况出现。没有被屏蔽掉的请求信号被送往优先级编码器,其中具有高优先级的中断级由一个先级编码器,其中具有高优先级的中断级由一个8-3编码器转换成编码器转换成3位位码,用这个码,用这个3位码与位码与3位的优先级寄存器进行比较,这个位的优先级寄存器进行比较,这个3位的优
41、先级位的优先级寄存器是由用户自己设定的。用户设定了某一值后,只有优先级高于寄存器是由用户自己设定的。用户设定了某一值后,只有优先级高于这个值的中断才能产生中断请求,而等于或低于这个值的所有中断将这个值的中断才能产生中断请求,而等于或低于这个值的所有中断将被屏蔽掉。此外优先级寄存器内还有一位可由用户设置的禁止位,设被屏蔽掉。此外优先级寄存器内还有一位可由用户设置的禁止位,设置禁止位后可使中断优先级比较失效,使中断检测信号不经过比较而置禁止位后可使中断优先级比较失效,使中断检测信号不经过比较而直接送到直接送到CPU的中断请求线上。的中断请求线上。 13.1.8中断嵌套中断嵌套v 中断嵌套是指当中断
42、嵌套是指当CPU正在执行某一低级别的中断服务程序时,允许响正在执行某一低级别的中断服务程序时,允许响应更高级别的中断源的中断请求,于是暂时挂起正在处理中的中断,应更高级别的中断源的中断请求,于是暂时挂起正在处理中的中断,转而进入更高级别的中断服务,待高优先级中断服务结束后,再返回转而进入更高级别的中断服务,待高优先级中断服务结束后,再返回到刚才被中断的那一级,继续执行。到刚才被中断的那一级,继续执行。v 由于多重嵌套中断的某些特点,决定了它与单级中断在处理过程中有由于多重嵌套中断的某些特点,决定了它与单级中断在处理过程中有以下不同之处。以下不同之处。v (1在响应更高级中断之前要先屏蔽掉本级和
43、较低级的中断请求,在响应更高级中断之前要先屏蔽掉本级和较低级的中断请求,防止干扰;防止干扰;v (2在进行本级中断服务前保护现场后要先开中断,以允许更高级在进行本级中断服务前保护现场后要先开中断,以允许更高级的中断响应,实现中断嵌套;的中断响应,实现中断嵌套;v (3中断服务程序结束后,为了在恢复现场时不受任何中断请求的中断服务程序结束后,为了在恢复现场时不受任何中断请求的干扰,必须先关中断;而在中断返回前恢复现场后再执行开中断指令,干扰,必须先关中断;而在中断返回前恢复现场后再执行开中断指令,以允许以允许CPU响应新的中断请求。响应新的中断请求。13.2软件中断软件中断v 通过中断向量表管理
44、众多的中断,用户就可以十分方便地通过中断向量表管理众多的中断,用户就可以十分方便地为自己建立一个软件中断。为自己建立一个软件中断。v 当用户想要编制和使用自己的中断服务程序时,先应该确当用户想要编制和使用自己的中断服务程序时,先应该确定中断类型;根据中断类型确定该中断在中断向量表中的定中断类型;根据中断类型确定该中断在中断向量表中的位置;然后将自己编制的中断服务程序位置;然后将自己编制的中断服务程序(可以是驻留内存可以是驻留内存的,也可以是非驻留内存的的,也可以是非驻留内存的)所在段的段地址和位移填入所在段的段地址和位移填入中断向量表中对应位置的两个字中。中断向量表中对应位置的两个字中。v 对
45、于软件中断,用户可通过指令对于软件中断,用户可通过指令INT n中的类型中的类型n进行安排。进行安排。13.2软件中断软件中断软件中断的处理过程软件中断的处理过程 软件中断的分类软件中断的分类 13.2.113.2.213.2.3软件中断的访问软件中断的访问 13.2.1软件中断的处理过程软件中断的处理过程 v 还是以还是以DOS系统功能调用中断系统功能调用中断INT 20H为例,来说明由软件引起的非为例,来说明由软件引起的非屏蔽型中断,当中断指令向屏蔽型中断,当中断指令向CPU发出中断请求时,发出中断请求时,CPU的处理过程如的处理过程如下。下。v 在程序中遇到在程序中遇到INT 20H时,
46、该指令产生中断类型号为时,该指令产生中断类型号为20H的中断,该的中断,该中断在中断向量表中的地址为中断在中断向量表中的地址为20H4=80H,如图,如图13-2所示。如果在所示。如果在DEBUG提示符提示符“-”后输入命令后输入命令D 0000:0080 L4,就会得到如下结果:,就会得到如下结果:v 0000:0080 72 10 A7 00 rv D是显示内存单元命令;是显示内存单元命令;0000:0080是要显示的内存单元的起始地址,是要显示的内存单元的起始地址,冒号前冒号前4位位16进制数是待显示内存单元的段地址,冒号后进制数是待显示内存单元的段地址,冒号后4位位16进制数进制数是待
47、显示内存单元的偏移量;是待显示内存单元的偏移量;L定义显示的长度,单位为字节,定义显示的长度,单位为字节,4表示表示显示长度值。显示长度值。v 结果中的结果中的“72 10 A7 00就代表以就代表以0000:0080开始的开始的4字节内存单元字节内存单元的的16进制内容,结果最右边的进制内容,结果最右边的“r”是相应字节的是相应字节的ASCII表示,对不表示,对不可见的字符以可见的字符以“.”替代。替代。13.2.1软件中断的处理过程软件中断的处理过程 v 根据显示的结果看出根据显示的结果看出INT 20H所对应的中断服务程序的入口地址为所对应的中断服务程序的入口地址为00A7:1072(注
48、意内存中数据的存放格式是由高到低的注意内存中数据的存放格式是由高到低的)。v 在接收在接收INT 20H指令后,指令后,CPU将自动进行如下的操作。将自动进行如下的操作。v (1将标志寄存器将标志寄存器(FLAGS)压入堆栈。压入堆栈。v (2用清中断标志用清中断标志(IF)和陷阱标志和陷阱标志(TF)禁止硬件中断,即关中断。当禁止硬件中断,即关中断。当用户编制自己的中断服务程序时,必要时在程序内可以用用户编制自己的中断服务程序时,必要时在程序内可以用STI指令开指令开中断,即打开由硬件自动关闭的中断允许触发器,使之能够响应更高中断,即打开由硬件自动关闭的中断允许触发器,使之能够响应更高级的中
49、断。级的中断。v (3将当前代码段寄存器将当前代码段寄存器(CS)的内容压栈。的内容压栈。v (4将当前指令指针将当前指令指针(IP)压栈,步骤压栈,步骤3)、()、(4的目的是确保中断的目的是确保中断处理完毕之后能够正确地返回中断调用处。处理完毕之后能够正确地返回中断调用处。v (5转向内存地址转向内存地址00A7:1072处进入中断服务程序。处进入中断服务程序。13.2.1软件中断的处理过程软件中断的处理过程 v 在中断服务程序执行完后,即在中断服务程序执行完后,即CPU接收到接收到IRET指令时,指令时,又将产生如下的操作。又将产生如下的操作。v (1从堆栈中将保存的原指令指针从堆栈中将
50、保存的原指令指针IP的内容弹出到的内容弹出到IP中。中。v (2从堆栈中将保存的原段寄存器从堆栈中将保存的原段寄存器CS的内容弹出到的内容弹出到CS中。中。v (3从堆栈中保存的原标志寄存器的状态,再弹出到从堆栈中保存的原标志寄存器的状态,再弹出到FLAGS,恢复中断时的标志寄存器状态。,恢复中断时的标志寄存器状态。v 由中断处理过程可以看出,软件中断指令非常类似于子程由中断处理过程可以看出,软件中断指令非常类似于子程序调用的序调用的CALL指令,即:暂停当前程序的执行,转而执指令,即:暂停当前程序的执行,转而执行另一程序段,当该程序段执行完时,行另一程序段,当该程序段执行完时,CPU都自动恢
51、复原都自动恢复原程序的执行。程序的执行。13.2.1软件中断的处理过程软件中断的处理过程 v 但两者之间还是有明显区别的。它们的主要差异有以下几点。但两者之间还是有明显区别的。它们的主要差异有以下几点。v (1子程序调用是程序员在编写源程序时事先安排好的,而中断是子程序调用是程序员在编写源程序时事先安排好的,而中断是由中断源根据自身的需要产生的,是不可预见的由中断源根据自身的需要产生的,是不可预见的(用指令用指令INT引起的中引起的中断除外断除外)。v (2子程序调用是用子程序调用是用CALL指令来实现的,但没有调用中断的指令,指令来实现的,但没有调用中断的指令,只有发出中断请求的事件只有发出
52、中断请求的事件(指令指令INT是发出内部中断信号,而不要理解是发出内部中断信号,而不要理解为调用中断服务程序为调用中断服务程序)。v (3子程序的返回指令是子程序的返回指令是RET,而中断服务程序全部是段间的调用,而中断服务程序全部是段间的调用,所以在结束时的返回指令是所以在结束时的返回指令是IRET/IRETD。且软件中断的。且软件中断的IRET指令具指令具有自动恢复断点和标志的功能。有自动恢复断点和标志的功能。v (4在通常情况下,子程序是由应用系统的开发者来编写的,而中在通常情况下,子程序是由应用系统的开发者来编写的,而中断服务程序是由系统软件设计者来编写的。断服务程序是由系统软件设计者
53、来编写的。 13.2.2软件中断的分类软件中断的分类DOS中断中断 1 BIOS中断中断 2 自由中断自由中断 31. DOS中断中断 v DOS中断占用的中断类型号为中断占用的中断类型号为20H3FH,目前使用了其中的,目前使用了其中的20H27H和和2FH,其余的为保,其余的为保留中断。其中每种留中断。其中每种DOS中断类中断类型号与其对应的功能见表型号与其对应的功能见表13-2。中断类型号中断类型号中断向量地址中断向量地址功能功能20H00080H00083H程序终止程序终止21H00084H00087HDOS系统功能调用系统功能调用22H00088H0008BH程序终止程序终止DOS返
54、回返回地址地址23H0008CH0008FHCtrl_C中断向量中断向量24H00090H00093H严重错误向量严重错误向量25H00094H00097H绝对磁盘读绝对磁盘读26H00098H0009BH绝对磁盘写绝对磁盘写27H0009CH0009FH结束并驻留内存结束并驻留内存28H000A0H000A3H键盘忙循环键盘忙循环29H000A4H000A7H快速写字符快速写字符2AH000A8H000ABHMicrosoft网络接口网络接口2EH000B8H000BBH基本基本SHELL程序装程序装入入2FH000BCH000BFH多路转接接口多路转接接口30H3FH000C0H000FC
55、H保留给保留给DOS2. BIOS中断中断 v BIOS中 断 占 用 的 中 断 号 为中 断 占 用 的 中 断 号 为10H1FH。它主要是供。它主要是供I/O驱动驱动程序使用,提供了应用程序、程序使用,提供了应用程序、DOS与设备的接口功能。用户与设备的接口功能。用户可以忽略对具体设备硬件上的可以忽略对具体设备硬件上的了解,直接应用这些功能调用了解,直接应用这些功能调用完成对具体设备的控制,其中完成对具体设备的控制,其中常见的常见的BIOS中断类型号与其对中断类型号与其对应的功能见表应的功能见表13-3。中断类型号中断类型号中断向量地址中断向量地址功能功能10H00040H00043H
56、显示器显示器I/O11H00044H00047H取设备信息取设备信息12H00048H0004BH取内存容量取内存容量13H0004CH0004FH磁盘磁盘I/O14H00050H00053HRS-232串行口串行口I/O15H00054H00057H磁带磁带I/O16H00058H0005BH键盘键盘I/O17H0005CH0005FH打印机打印机I/O18H00060H00063HROM BASIC入入口代码口代码19H00064H00067H引导装入程序引导装入程序1AH00068H0006BH时钟时钟1BH0006CH0006FH键盘终止地址键盘终止地址(Ctrl_Break)1CH0
57、0070H00073H定时器定时器1DH00074H00077H显示器参数显示器参数1EH00078H0007BH软盘参数表软盘参数表1FH0007CH0007FH图形字符扩展码图形字符扩展码3. 自由中断自由中断 v 自由中断是由系统或应用程序设置开发的。可以理解为这类中断是系自由中断是由系统或应用程序设置开发的。可以理解为这类中断是系统或应用程序为了完成特定的功能而扩展出来的中断,它们占用了中统或应用程序为了完成特定的功能而扩展出来的中断,它们占用了中断向量表中断向量表中80H0FFH的位置。系统给自身和应用程序留下了很大的的位置。系统给自身和应用程序留下了很大的余地。余地。v 这几类软件
58、中断之间存在一定的层次关系。在用户程序中,若直接通这几类软件中断之间存在一定的层次关系。在用户程序中,若直接通过端口来操作硬件或外设,处理速度是最快的,但这样做,使用户程过端口来操作硬件或外设,处理速度是最快的,但这样做,使用户程序存在很大的局限性。硬件环境的改变将直接影响程序的正常运行。序存在很大的局限性。硬件环境的改变将直接影响程序的正常运行。v 若用户程序通过调用若用户程序通过调用DOS功能来实现其所需功能,那么,应用程序与功能来实现其所需功能,那么,应用程序与低层硬件相距较远,操作最终的对象需要经过中间环节,处理速度肯低层硬件相距较远,操作最终的对象需要经过中间环节,处理速度肯定受到一
59、定的损失,但这种应用程序适应性强、应用范围广、对硬件定受到一定的损失,但这种应用程序适应性强、应用范围广、对硬件的依赖性最小。的依赖性最小。3. 自由中断自由中断 v 由于由于BIOS介于介于DOS和具体硬件之间,所以,调用和具体硬件之间,所以,调用BIOS的功能是一个的功能是一个很好的折中方案。用户可在以下很好的折中方案。用户可在以下3种情况下考虑使用种情况下考虑使用BIOS的功能:的功能:v (1BIOS提供的功能,而提供的功能,而DOS没有提供该功能。没有提供该功能。v (2不能利用不能利用DOS功能调用的情况功能调用的情况(可能因为某些具体应用的限制可能因为某些具体应用的限制)。v (
60、3基于处理速度的考虑,需要绕过基于处理速度的考虑,需要绕过DOS层的情况。层的情况。v 可以看出使用中断的层次越高,它与硬件设备相关程度就越低,处理可以看出使用中断的层次越高,它与硬件设备相关程度就越低,处理速度也就越低,但用户程序的适用范围较广;使用中断的层次越低,速度也就越低,但用户程序的适用范围较广;使用中断的层次越低,它与硬件设备相关程度越高,处理速度越快,用户程序的适用范围较它与硬件设备相关程度越高,处理速度越快,用户程序的适用范围较小。因此程序员可根据应用程序的要求、对硬件环境的熟悉程度等因小。因此程序员可根据应用程序的要求、对硬件环境的熟悉程度等因素来选用不同层次的中断。素来选用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度会所精装修工程智能化升级合同
- 2025年度大数据处理技术支持合同
- 2025年度河沙碎石行业安全生产责任合同
- 2025年度商业综合体垂直交通设施升级改造合同
- 2025年度智能安防系统劳务派遣服务合同
- 2025年度环保项目股东垫资合同书
- 2025年度中小企业劳动法合规经营咨询与辅导合同
- 2025年度太阳能热利用工程劳务分包合同细则
- 2025年度国际教育机构劳务合作合同模板
- 2025年度公积金贷款二手房买卖合同范本(含房屋租赁安排)
- 某县城区地下综合管廊建设工程项目可行性实施报告
- 《架空输电线路导线舞动风偏故障告警系统技术导则》
- 2024年计算机二级WPS考试题库
- 广东省广州黄埔区2023-2024学年八年级上学期期末数学试卷(含答案)
- 法理学课件马工程
- 《无菌检查培训》课件
- 2024-2030年中国香菇行业销售状况及供需前景预测报告
- 高中英语必背3500单词表(完整版)
- GB/T 44570-2024塑料制品聚碳酸酯板材
- 禁止送礼的协议书
- 2024年版《输变电工程标准工艺应用图册》
评论
0/150
提交评论