《汇编语言程序设计》第十三章:中断及中断处理程序.ppt
《《汇编语言程序设计》第十三章:中断及中断处理程序.ppt》由会员分享,可在线阅读,更多相关《《汇编语言程序设计》第十三章:中断及中断处理程序.ppt(72页珍藏版)》请在三一办公上搜索。
1、汇编语言程序设计-朱耀庭,南开大学 朱耀庭,第13章中断及中断处理程序,中断在计算机科学中占有十分重要的地位,是计算机科学中最基本的概念之一。如果没有中断以及中断机制的引入与应用,就不可能有计算机操作系统的出现,也就不可能有今天如此高效率的计算机。使用计算机时,操作健盘、移动鼠标之所以能够被计算机感知并且予以及时响应处理,这完全得益于计算机的中断处理。本章将重点介绍80X86 的中断机制及中断处理程序的设计方法,同时还将介绍请求DOS、BIOS中断服务,以及调用DOS、BIOS内部功能子程序(即DOS、BIOS功能调用)的方法和用途等。,南开大学 朱耀庭,第二章 80 x86实模式汇编的运行环
2、境,13.6典型的中断处理程序实例,13.5DOS和BIOS功能调用实例,13.4BIOS中断服务,13.2软件中断,13.1中断及中断相关概念,13.3DOS中断服务,南开大学 朱耀庭,13.1中断及中断相关概念,中断的基本概念中断向量表中断源及中断源的识别中断的分类中断处理机制CPU响应中断的条件中断的优先级,南开大学 朱耀庭,中断的基本概念,在计算机系统中,引入中断的最初目的是为了提高系统的输入输出性能随着计算机应用的发展,中断技术也应用到计算机系统的许多领域,如:多道程序、分时系统、实时处理、程序监视和跟踪等领域。中断就是使中央处理器暂时挂起当前正在进行的工作程序,转向某紧急事件的服务
3、与处理程序,并在执行完该服务与处理程序后,再返回到曾经被其中止和挂起的原有程序处继续完成原有工作的整个过程。,南开大学 朱耀庭,中断向量表,在中断发生后,中断处理程序需要对因各种原因触发的相应中断进行处理。80X86中断系统能处理256种类型的中断,同时给每种中断安排了一个中断类型号,即0H0FFH号中断,每种类型的中断都有相应的中断处理程序。如何有效地管理和保存如此多的中断及其对应的中断处理程序呢?那就是利用中断向量表。中断向量表是一个特殊的线性表,它保存着系统所有中断服务程序的入口地址。在80X86微机系统中,该表保存的256个中断向量分别对应于256种中断类型,每个表项占4个字节,其中两
4、个字节存放中断处理程序的段地址,另两个字节存放中断处理程序的段内偏移量,所以中断向量表为1K字节,它起止于存储器中地址0000H3FFH处,如图13-1所示:,南开大学 朱耀庭,中断向量表,图13-1中断向量表,南开大学 朱耀庭,中断向量表,各个中断处理程序的入口地址在中断向量表中是按中断类型号顺序存放的,因此将中断类型号乘以4就得到对应中断向量的地址。例如,溢出中断的中断类型号为04H,则它的中断向量的地址为04H4=10H,内存地址从10H开始的4个字节中,10H和11H两字节中存放溢出中断程序的偏移地址,12H和13H两字节中存放溢出中断程序的段地址,在发生溢出中断时,将这个偏移地址和段
5、地址分别取出送给寄存器IP和CS,CPU即转向溢出中断处理程序。,南开大学 朱耀庭,中断向量表,表13-1中断类型号和中断向量地址,南开大学 朱耀庭,中断向量表,图13-2以DOS中断INT 20H为例,说明CPU处理各类中断的过程,该过程主要包括以下5个步骤:(1)取中断的中断类型号(2)计算中断向量地址(3)取出中断向量4字节单元中的内容,将其中两字节代表中断处理程序段地址的内容送入CS寄存器,两字节代表中断处理程序偏移量的内容送入IP寄存器(4)转向相应的中断处理程序(5)中断返回到原中断指令的下一条指令处,南开大学 朱耀庭,中断向量表,图13-2中断处理过程,演示动画,注意:这里假设被
6、中断的程序的下一条指令是“MOV AX,0”,事实上也可能是其他指令,南开大学 朱耀庭,中断源及中断源的识别,在中断过程中,我们称引起紧急事务的事件为中断源计算机系统有上百种可以发出中断请求的中断源,但最常见的中断源是:外设的输入/输出请求例如,键盘输入引起的中断,通信端口接收信息引起的中断等还有一些计算机内部的异常事件,例如,0作除数、奇偶校验错等80X86的常见中断源如图13-3所示:,南开大学 朱耀庭,中断源及中断源的识别,图13-380X86中断源,演示动画,南开大学 朱耀庭,中断源及中断源的识别,常见的中断源大致分为CPU外部产生的中断和CPU内部产生的中断。其中外部中断源包括通过N
7、MI引脚传递的非屏蔽中断请求产生的中断和通过Intel 8259A可编程中断控制器的INTR引脚传递的由外部设备产生的中断等。CPU内部中断则包括除法出错中断、单步中断、INTO指令产生的溢出中断和程序中安排的INT n中断指令产生的中断等。外部设备的中断通过8259A的INTR引脚给CPU传送中断信号,8259A还可以使用级联的方式增加连接的外部设备数目。如此多的中断源,CPU是如何确定INTR引脚上的中断信号是来自中断源中的哪一个呢?CPU是通过一定的查询电路来完成的。,南开大学 朱耀庭,中断源及中断源的识别,南开大学 朱耀庭,1.查询中断识别法,查询中断识别法主要是软件查询法,在接受中断
8、请求信号之后,中断识别程序逐个查询连接到系统上的每个设备。当被检查设备的中断请求触发器被置位时,中断识别程序便转向相应的中断服务程序的入口地址处。对于中断源较多的大系统来说,查询中断花费在查询上的时间就太多了,并且还需要有附加的中断识别程序,因此多数系统采用另一种更加方便、快速的中断识别方法向量中断识别法。,南开大学 朱耀庭,2.向量中断识别法,向量中断识别法要求输入/输出设备提供中断信号和设备的标识码,即中断向量,或者提供中断服务程序的入口地址。当CPU响应了某设备的中断请求后,控制逻辑就将该设备的中断服务程序的地址传送至CPU,使CPU跳转到相应的中断服务程序,进而完成中断服务。向量中断识
9、别虽然识别中断源十分快捷,但它需要增加硬件的开销,因此将查询中断识别法和向量中断识别法结合起来使用效果会更好。目前有许多计算机系统就是这样做的。,南开大学 朱耀庭,中断的分类,计算机系统有上百种中断,如何对这些中断的类型进行划分呢?由图13-3中80X86系统的常见中断源可知,可以将中断按中断源划分为内部中断和外部中断。按中断源的特性,中断也可以分为硬件中断和软件中断。硬件中断按中断的屏蔽性质,又可以分为可屏蔽中断和不可屏蔽中断。下面详细介绍一下这几种划分以及它们之间的相互关系。,南开大学 朱耀庭,中断的分类,南开大学 朱耀庭,1.外部中断,外部中断一般是指外部硬件中断,它是处理器外部的硬件设
10、备产生而发向处理器的中断。它分为可屏蔽中断和不可屏蔽中断两种,分别由INTR引脚和NMI引脚的信号触发。(1)不可屏蔽中断不可屏蔽中断是用来处理一些紧急情况,如电源故障、内存或I/O总线的奇偶错误等异常事件。它不能由用户通过指令进行屏蔽,也不受中断允许标志IF的限制。一旦CPU接收到NMI引脚上的信号,就必须立即响应,转向NMI的中断服务程序,硬件将自动完成断点保护和现场保护,并在中断返回时执行一条RETN指令。,南开大学 朱耀庭,1.外部中断,(2)可屏蔽中断可屏蔽中断通常来自外部设备,可以通过指令设置中断控制器的屏蔽参数来禁止某些指定的中断。例如中断控制器8259A有IR0IR7共8级中断
11、,8259A接收来自外设的中断请求信号,并将中断源的中断类型号发送到CPU。在外设发出中断请求到CPU响应中断的过程中有两个控制条件:一是该外设的中断请求是否被屏蔽,该条件由8259A的中断屏蔽寄存器(IMR)控制;另一个是CPU是否允许响应中断,该条件由CPU的标志寄存器(FLAGS)中的中断允许位IF来控制。可以通过置中断屏蔽寄存器来屏蔽相应的中断申请。8259A的中断屏蔽寄存器I/O端口地址是21H,该寄存器的8位对应控制8个外部设备。若某位为0,表示允许该位对应外设的中断请求;若某位为1,则表示该位对应外设的中断请求被屏蔽。,南开大学 朱耀庭,1.外部中断,例如,如图13-3所示,假设
12、只允许系统定时器中断,系统定时器的中断请求对应8259A的IRQ0,于是可如下设置中断屏蔽寄存器:MOVAL,11111110B OUT21H,ALCPU是否响应外设发出的中断请求还与标志寄存器中的中断标志位IF有关。IF为0,CPU禁止响应任何外设请求的中断;IF为1,则CPU可以响应外设的中断请求。在程序中可以通过以下两条指令来设置和清除IF位。STI;开中断,IF=1 CLI;关中断,IF=0在任何类型的中断发生时,CPU将当前的FLAGS入栈,并置IF为0,然后进入中断处理程序。当中断处理程序完成,执行到中断返回指令IRET时,从栈中恢复原FLAGS的值,将IF置1,这时允许新的中断发
13、生。如果需要在一个中断处理程序的执行过程中允许响应另外的中断,也可以使用开中断指令STI。,南开大学 朱耀庭,2.内部中断,内部中断主要包括内部硬件中断和软件中断内部硬件中断是指由某些特殊指令触发的中断 如单步中断 除法出错中断 溢出中断软件中断则是指由指令INT n引起的非屏蔽中断 如DOS中断、BIOS中断和其他自由中断,南开大学 朱耀庭,2.内部中断,(1)除法出错中断除法错的中断类型号为0。除法运算中除数不能为0,因此在程序中不慎写入了除数为零的除法运算,就会产生除数为零的中断。还有一种情况,那就是在除法运算中,所得的商大于某一确定的极值也将引起除法出错中断。例如:MOV DX,34H
14、 MOV AX,5678H MOV BX,1 DIV BX上面的4条指令,是一个双字除以字的运算。结果将商放在AX寄存器中,余数放在DX寄存器中。对于无符号数商的最大允许值为65535,而这里除数BX为1,所以商345678H必然大于65535,因此也将产生一个除法错误。,南开大学 朱耀庭,2.内部中断,(2)溢出中断溢出中断的中断类型号为4。在指令序列中,若上一个指令由于某些特殊的原因使溢出标志OF置1,那么当执行溢出中断指令INTO时会立即产生04H类中断,若OF标志为0,则INTO不起作用。(3)单步中断和断点中断在使用DEBUG调试程序时,会经常使用到T命令和P命令,而这两个命令的执行
15、恰好是利用了内部硬件中断之一的单步中断INT 01H和断点中断INT 03H,它的特征是将陷阱标志TF置位,这样当程序运行时,会在每一条指令的后面产生一个单步中断,从而终止指令的继续执行。,南开大学 朱耀庭,2.内部中断,(4)软件中断CPU在执行完一条INT n指令后,就会立即产生n类软件中断,调用系统中相应的中断处理程序完成中断的功能。其中INT n指令的n为中断类型号。例如,对系统定时器进行控制,则可以在程序中安排一条中断指令:INT1CH当CPU执行到这条指令时,则从中断向量表中1CH4=70H至73H处取4个字节的内容(它们是中断服务程序的偏移量和段地址),自动将其送到IP和CS,然
16、后转向对应的中断服务程序。INT指令可以指定0H0FFH中的任何中断类型号。除系统占用的中断类型号外,用户可以利用保留的中断类型号扩充新的中断处理功能。,南开大学 朱耀庭,中断处理机制,计算机系统中的中断源大致可分为几类,如一般的I/O设备、软件中断、实时钟、故障源等。一个中断系统如果要合理地响应如此多的中断源,就需要具备以下十分完善的“中断处理机制”。(1)当中断源向CPU发出中断请求时,CPU能有权决定是否响应此中断请求,在响应中断请求的情况下要能保护断点,中断处理程序执行完毕后能够正确返回断点处继续执行。(2)中断应具有优先级。在某一时刻如果有许多中断源同时发出中断请求,CPU应能够实现
17、中断优先级排队,即按中断请求的级别来决定先响应哪一个中断,保证首先响应优先级高的中断请求,但同时又要防止低级中断源的中断请求一直得不到CPU响应的现象出现。,南开大学 朱耀庭,中断处理机制,(3)能够实现中断的嵌套。中断源向CPU发出的中断请求是连续不断的,即使已经是响应了某个中断请求而进入相应的中断服务程序,如果这时又有了一个级别更高的中断请求,CPU应该能暂时挂起正在进行的中断服务程序,转而去响应更高优先级的中断请求,响应结束后再返回到原中断处理程序。例如当自己编写的中断服务程序中用到DOS或BIOS提供的中断时,它们就相当于更高级别的中断请求,当CPU响应并进入自己编写的中断服务程序时,
18、如果遇到DOS或BIOS中断,就需暂时挂起自己的中断服务程序转而去响应DOS或BIOS中断。,南开大学 朱耀庭,CPU响应中断的条件,CPU一般是在执行现行指令的最后一个机器指令周期时检测是否有中断请求的,所以在硬件上需要每个中断源都接有一个中断请求触发器,以便能够将中断源产生的中断请求信号锁存起来,并保持到CPU检测完之后。同时,为了在多个中断源请求中断的情况下能够增加控制的灵活性,在硬件上还需要一个中断屏蔽触发器,以决定中断请求被通过还是被屏蔽。此外,在CPU内部还要有一个中断允许触发器,它可以通过STI和CLI指令来设置。即通过STI开中断,使CPU能正常响应中断源的中断请求;而通过CL
19、I关中断,使CPU不响应任何中断请求。,南开大学 朱耀庭,CPU响应中断的条件,因此,CPU响应某个中断请求须满足以下3个条件:(1)中断源置中断请求触发器。由于CPU在每条指令周期结束时才检测是否有中断请求信号,所以中断请求触发器包含一个锁存器,它将中断请求信号锁存起来直到CPU来检测之后再清除。(2)中断源的中断屏蔽触发器未被置位,否则该中断源的所有中断请求将被屏蔽掉。若干中断源的屏蔽触发器可以组成一个中断屏蔽寄存器。(3)CPU内的中断允许触发器置位。当CPU响应中断之后,CPU自动将中断允许触发器复位,即关中断。因此,在中断服务程序中,保护现场后一般情况下应该使用STI指令开中断,使C
20、PU能够继续响应来自其他中断源的更高级别的中断请求,来实现所谓的中断嵌套。当上述3个条件都满足时,如果此时CPU正好处在指令周期的结束并检测到有中断请求时,那么就响应中断并进入中断响应周期。,南开大学 朱耀庭,中断的优先级,多数中断是随机发生的,所以必然会出现某一时刻有多个中断源同时请求中断的情况。CPU在某一时刻只能处理一个中断,因此,它需要决定首先为哪一个中断源服务。CPU根据中断源请求的轻重缓急,预先定义好中断处理的优先级,首先响应紧急的、级别高的中断请求,然后响应级别轻缓的中断请求。当CPU正在处理某一中断时,它还应该能够响应优先级更高的中断请求,而屏蔽掉同级或较低级的中断请求。,南开
21、大学 朱耀庭,中断的优先级,南开大学 朱耀庭,1.软件查询法,软件查询优先级的方法十分简单,它将所有外设的中断请求触发器组合成一个寄存器端口。当CPU接收到中断请求信号时,由一个查询程序来逐位检测中断请求寄存器的状态。先被检测的位,它所对应的中断源是高优先级的;后检测的位,它所对应的中断源是低优先级的。由于软件查询法是通过程序实现查询的,所以当中断源较多时软件查询的时间就会较长。,南开大学 朱耀庭,2.硬件查询法,硬件查询是一种广泛使用的中断优先级排队方式,它通过使用优先权控制器(PIC)莱实现优先级排队。优先权中断控制器是由优先权编码器和比较器等构成的电路,再加上中断请求寄存器、中断屏蔽寄存
22、器共同组成了一个比较完整的中断控制系统。优先权控制器PIC可同时接收8个中断输入。与每一个中断请求位对应的有一个中断屏蔽位,程序设计者可以对中断屏蔽寄存器编程以选择允许的中断。这样可以灵活地调整中断优先级,并可防止出现低级中断永远也得不到响应的情况出现。没有被屏蔽掉的请求信号被送往优先级编码器,其中具有高优先级的中断级由一个8-3编码器转换成3位码,用这个3位码与3位的优先级寄存器进行比较,这个3位的优先级寄存器是由用户自己设定的。用户设定了某一值后,只有优先级高于这个值的中断才能产生中断请求,而等于或低于这个值的所有中断将被屏蔽掉。此外优先级寄存器内还有一位可由用户设置的禁止位,设置禁止位后
23、可使中断优先级比较失效,使中断检测信号不经过比较而直接送到CPU的中断请求线上。,南开大学 朱耀庭,中断嵌套,中断嵌套是指当CPU正在执行某一低级别的中断服务程序时,允许响应更高级别的中断源的中断请求,于是暂时挂起正在处理中的中断,转而进入更高级别的中断服务,待高优先级中断服务结束后,再返回到刚才被中断的那一级,继续执行。由于多重嵌套中断的某些特点,决定了它与单级中断在处理过程中有以下不同之处。(1)在响应更高级中断之前要先屏蔽掉本级和较低级的中断请求,防止干扰;(2)在进行本级中断服务前保护现场后要先开中断,以允许更高级的中断响应,实现中断嵌套;(3)中断服务程序结束后,为了在恢复现场时不受
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言程序设计 汇编语言 程序设计 第十三 中断 处理 程序
链接地址:https://www.31ppt.com/p-6527968.html