第8章中断和8259A中国科学技术大学8.1中断第8章中断和8259A中国科学技术大学8.1中断本章主要内容:§8.1中断§8.28259A的工作原理§8.38259A应用举例第8章中断和8259A中国科学技术大学8.1中断§8.1中断8.1.1中断概念和分类8.1.2中断的响应与处理过程第8章中断和8259A中国科学技术大学8.1中断8.1.1中断概念和分类1.中断的定义和功能中断定义:计算机在执行正常程序过程中,暂时中止当前程序的运行,转到中断处理程序去处理临时发生的事件,处理完后又恢复原来程序的运行,这个过程称为中断(Interrupt)。第8章中断和8259A中国科学技术大学8.1中断中断功能:使CPU和外设在部分时间内并行工作,大大提高CPU的利用率;在实时控制系统中,现场数据可及时接收处理,避免丢失;故障的处理,如电源掉电、奇偶校验错、运算中溢出错等;利用中断指令,直接调用大量系统已编写好的中断服务程序,实现对硬件的控制。1.中断的定义和功能第8章中断和8259A中国科学技术大学8.1中断2.中断源和中断分类引起中断的原因或能发出中断请求的来源称为中断源。8086有两种中断源,中断分为两大类:1)外部中断或硬件中断,从不可屏蔽中断引脚NMI和可屏蔽中断引脚INTR引入;2)内部中断或软件中断,是为解决CPU运行过程中出现的一些意外事件或便于程序调试而设置的。第8章中断和8259A中国科学技术大学8.1中断图8.1IBMPC机中8086的中断分类和中断源2.中断源和中断分类第8章中断和8259A中国科学技术大学8.1中断1)外部中断不可屏蔽中断NMI,处理较紧急的情况,如存储器或I/O校验错、掉电、协处理器异常中断请求等,不受中断标志IF的影响。可屏蔽中断由8259A的INT引脚输出,连到CPU的INTR上。只有当CPU的FLAGS的IF=1时,才允许响应此类中断请求。8259A的输入引脚IR0~IR7可引入8级中断:时钟、键盘、串行通信口COM1和COM2、硬盘、软盘、打印机。经芯片内部判别后,将优先级高的中断请求信号送到INT引脚。2.中断源和中断分类第8章中断和8259A中国科学技术大学8.1中断2.中断源和中断分类2)内部中断(1)除法错中断执行除法运算指令时,如除数为0或商超过了结果寄存器能容纳的范围,则产生除法错中断。(2)单步中断单步标志TF置1,指令执行完后,产生单步中断。结果是将CPU的内部寄存器和有关存储器的内容显示出来,便于跟踪程序的执行过程,实现动态排错。第8章中断和8259A中国科学技术大学8.1中断2.中断源和中断分类8086没有直接使TF标志置1或清0的指令,如何使TF标志置1或清0?使TF标志置1的程序段:PUSHF;标志寄存器FLAGS入栈POPAX;AX←FLAGS内容ORAX,0100H;使AX(即标志寄存器)的;D8=1,其余位不变PUSHAX;AX入栈POPF;FLAGS寄存器←AX用类似方法将标志寄存器与FEFFH相与,可使TF标志清0,从而禁止单步中断。第8章中断和8259A中国科学技术大学8.1中断2.中断源和中断分类(3)溢出中断溢出标志=1,则可由溢出中断指令INTO产生中断类型号为4的溢出中断。若OF=0,不会产生中断。带符号数加、减指令后应安排一条INTO指令,一旦溢出就能及时向CPU提出中断请求,CPU响应中断后可进行相应的处理。第8章中断和8259A中国科学技术大学8.1中断2.中断源和中断分类(4)软件中断指令INTn中断类型号n=0~255。它可以安排在程序的任何位置上。(5)断点中断程序运行到断点时便产生中断,像单步中断一样,查看各寄存器和有关存储单元的内容。断点可设在程序任何地方并可以设多个断点,设置的方法是插入一条INT3指令。利用断点中断可以调试一段程序,比单步中断的调试速度快得多。第8章中断和8259A中国科学技术大学8.1中断3.中断向量表1)中断响应和返回CPU响应中断时,首先要把CS、IP寄存器的值(断点)以及标志寄存器FLAGS的值推入堆栈保护。然后找到中断服务程序的入口地址,转去执行相应的中断服务程序。中断服务程序结束时,执行中断返回指令IRET返回正常程序继续执行。如何寻找中断服务程序的入口地址,是中断处理过程中的一个重要环节。第8章中断和8259A中国科学技术大学8.1中断3.中断向量表2)中断向量表中断向量表用来存放中断服务程序的入口地址。8086可处理256(0~FFH)类中断,每类中断有一个入口地址(中断向量),包含CS和IP,共4个字节。因此存储256个地址,需要占用1K字节,它们位于内存00000~003FFH的区域中。将中断类型号n乘以4就能找到规定类型的中断向量,规定IP在前,CS在后。类型号为0~4的专用中断:0-除法错中断、1-单步中断、2-不可屏蔽(NMI)中断、3-断点中断和4-溢出中断,它们的中断向量分别存放在00H、04H、08H、0CH和10H开始的4个连续单元中。第8章中断和8259A中国科学技术大学8.1中断3.中断向量表例如,对n=2的NMI中断,其中断服务程序的入口地址放在00008~0000BH单元中,入口地址的CS存放在0000AH开始的字单元中,IP存放在00008H开始的字单元中。?在PC机中,在8259A的中断输入端IR0~IR7引入的中断类型号为08~0FH,如何求它们的中断服务程序入口地址?存放在中断向量表中的什么位置上?第8章中断和8259A中国科学技术大学8.1中断3.中断向量表第8章中断和8259A中国科学技术大学8.1中断3.中断向量表举例说明中断类型号n与中断向量表的关系。例8.1类型号n=44H的中断服务程序的入口地址为3600:2000H,它们在中断向量表中应如何存放?中断类型号n=44H=01000100B它的中断服务程序的入口地址应放在44H4开始的4个字节单元中,乘4操作只要将类型号n左移2位,右边补2个0即可。44H4=0100010000B=0110H从0110H开始存放3600:2000H如图8.3第8章中断和8259A中国科学技术大学8.1中断3.中断向量表例8.2若在中断向量表中,(0040H)=240BH,而(0042H)=D169H,如图8.4所示,试问这4个单元中的内容对应的中断类型号n=?该中断服务程序的起始地址是什么?中断服务程序的入口地址从0040H单元开始存放,其类型号n=40H/4=10H(右移2位)由图可知,中断类型号为10H的中断服务程序的入口地址=D169:240BH。第8章中断和8259A中国科学技术大学8.1中断4.中断优先级和中断嵌套1)中断优先级按中断源的重要性和实时性,排出响应中断的次序,这种次序称为中断优先级。在8086中,中断优先级从高到低的次序为:―除法错、INTn、INTO;最高级,同一行的;有同等优先级―NMI;次高级―INTR;较低级(由8259A引入)―单步中断;最低级第8章中断和8259A中国科学技术大学8.1中断4.中断优先级和中断嵌套2)中断嵌套CPU响应中断时,一般先响应优先级高的,后响应优先级低的中断请求。如CPU正在执行中断服务程序时,有优先级较高的中断源提出请求,则将正在处理的中断暂时挂起,先为高级中断服务,服务完后再返回较低级中断,称为中断嵌套。第8章中断和8259A中国科学技术大学8.1中断4.中断优先级和中断嵌套如何实现中断嵌套?机器进入中断服务程序后,硬件会自动关中断。只有用STI指令将中断打开后,才允许高级中断进入,实现中断嵌套。中断服程序结束前,必须用EOI命令结束该级中断,并用IRET指令返回到中断前的断点处去继续执行原程序。第8章中断和8259A中国科学技术大学8.1中断4.中断优先级和中断嵌套可屏蔽中断从8259A的8个输入端引入,一般情况下,优先级从高到低排列的次序为IR0~IR7。中断嵌套的示意图如图所示,说明见下页。第8章中断和8259A中国科学技术大学8.1中断4.中断优先级和中断嵌套图中的中断嵌套情况的执行过程:主程序运行中,IR2、IR4同时提出中断请求。IR2优先级高,先为IR2服务。在IR2的服务程序中,要用STI指令开中断,允许更高级中断进入。第8章中断和8259A中国科学技术大学8.1中断IR2服务时,IR1提出请求,IR2被挂起,为IR1服务。IR1结束前用EOI指令清除IR1的服务寄存器,结束IR1中断,并用IRET指令返回IR2服务程序,继续运行。运行至EOI命令时结束IR2的服务,响应IR4的中断。第8章中断和8259A中国科学技术大学8.1中断IR4结束后,由IRET指令返回IR2服务程序,最后从IR2返回主程序。这样就完成了多重嵌套中断程序的执行过程。在中断服务程序中,如不安排开中断指令STI,则高级中断不能打断低级中断,也就不能实现中断的嵌套。第8章中断和8259A中国科学技术大学8.1中断§8.1中断8.1.1中断概念和分类8.1.2中断的响应与处理过程第8章中断和8259A中国科学技术大学8.1中断8.1.2中断的响应与处理过程1.中断响应过程如图,可屏蔽中断的响应和处理流程。每条指令执行完,CPU都要查NMI和INTR脚上是否有中断请求,若无,继续取下一条指令执行。如有则响应中断,硬件自动完成关闭中断和保护断点操作,将下条要执行指令的CS和IP(即断点)推入堆栈;然后寻找中断服务程序的入口地址,找到后就转入相应的中断服务程序。恢复现场,开中断,返回断点。第8章中断和8259A中国科学技术大学8.1中断2.8086的中断响应与处理图8.7:8086的中断响应与处理的流程中断响应和请求流程分为:中断查询、中断响应、中断处理和返回三个部分。第8章中断和8259A中国科学技术大学8.1中断2.8086的中断响应与处理1)中断查询CPU在执行完每条指令后,会顺序检查是否有软中断、NMI、INTR和单步中断,如有,则进入中断响应周期。2)中断响应根据不同的中断源形成不同的中断类型码n,再在中断向量表中,根据n找到各自的中断服务程序的入口地址,转入相应的中断处理程序。例如n=2,则形成中断类型码2,再在中断向量表中找到n4=24=8开始的连续4个字节单元,从中取出CS:IP,转去执行可屏蔽中断。第8章中断和8259A中国科学技术大学8.1中断2.8086的中断响应与处理重点介绍从INTR引脚引入的可屏蔽中断的类型码是如何形成的。CPU响应INTR中断后,要执行两个连续的中断响应INTA总线周期,其时序图如图8.8第8章中断和8259A中国科学技术大学8.1中断2.8086的中断响应与处理第一个周期,CPU使数据线D7~D0浮空,T2~T4期间向8259A发第1个中断响应信号表示CPU已响应此中断,禁止其它总线控制器竞争总线。INTAINTA第8章中断和8259A中国科学技术大学8.1中断第二个周期,8259A收到第二个信号后,将中断类型号n置于数据总线上,由此找到中断服务程序的入口地址。INTAINTA第8章中断和8259A中国科学技术大学8.1中断2.8086的中断响应与处理从8259A的IR7~IR0上可引入8级中断,形成8个8位中断类型码,其中高5位D7~D3由用户通过对8259A编程来确定,在PC/XT机中为00001,低3位D2~D0由IR7~IR0的序号来决定,见表8.1。高5位确定后,8级中断类型码就确定了。第8章中断和8259A中国科学技术大学8.1中断2.8086的中断响应与处理3)中断处理和返回(1)由硬件自动完成以下工作FLAGS的内容入栈;保护单步标志TF;清IF标志,关中断,中断处理过程中禁止其它中断进入;清TF标志,使CPU不会以单步形式执行中断处理程序;保护断点,CS:IP入栈。第8章中断和8259A中国科学技术大学8.1中断2.8086的中断响应与处理(2)