资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,第,7,章 微计算机的中断系统,1,7.1,中断控制方式的特点,如前所述,当,CPU,与外设用查询方式传送数据时,外设完全处于被动状态,只有被,CPU,查询到并且具备传送数据的条件时才有可能工作,因此在查询方式下,,CPU,将大量时间花在等待上,降低了工作效率。因此在计算机技术中引入了中断的概念。,中断,是指计算机的,CPU,在正常运行程序时,由于内部或外部某个紧急事件的发生,使,CPU,暂停正在运行的程序,而转去执行请求中断的那个外设或事件的中断服务,(,处理,),程序,待处理完后再返回被中断的程序,继续执行,。这个过程就是中断。,2,1.,中断系统所具有的功能,为了满足上述要求,中断系统应具有如下功能:,多中断源请求,软件可禁止和允许每个中断源的中断请求。通常在系统中会有多个中断源,如果在某段时间内,,CPU,不想为某个或某几个中断源服务,这就要求系统能够通过软件暂时屏蔽对应的中断源,而对其他中断源仍保持开放状态。当在另外的时间段,系统还可通过软件开放前面被屏蔽的中断源。,(2),中断优先级判别功能,响应优先级别最高的请求。当系统中的多个中断源同时申请中断时,就必须要求用户事先根据各中断源的轻重缓急规定一个中断级别,即优先级。,CPU,可根据优先级找到中断级别最高的中断源,并响应它的中断请求。当中断处理完后,再响应级别较低的中断源。,3,(3),中断嵌套功能,即级别高的中断可中断级别较低的中断。当,CPU,正在执行某个中断源中断服务程序时,若有级别更高的中断源向,CPU,申请中断,则,CPU,应能暂停正在执行的中断服务程序而响应级别高的中断,在处理完级别高的中断后,再继续执行被暂停的中断服务程序。,(4),中断实现。当某一中断源向,CPU,申请中断后,,CPU,能决定是否给予响应,当响应中断后,能自动转向中断处理程序去执行,中断处理结束后能自动返回主程序继续执行。,4,2.,中断系统的组成,为实现上述功能,完整的中断系统应包括以下,3,方面:,(1),微处理器应有处理中断请求的机制与相关硬件电路。即接收请求、响应请求、保护现场、转向中断服务程序以及中断处理完返回。,(2),外围应有一个与处理器匹配的中断控制器,能管理多个中断源,进行优先级裁决及中断源屏蔽等功能。,(3),根据处理器的结构编写中断处理程序,安排相关的系统初始化。,5,3.,中断控制方式的优点,1),分时处理,CPU,在启动外设工作后,继续执行主程序。当外设向,CPU,发出数据传递的中断请求时,,CPU,暂停主程序,而执行,I/O(,中断处理,),操作,中断处理结束后,,CPU,恢复执行主程序的同时,外设也继续原来的工作。具备了中断功能,,CPU,可允许多个外设同时工作,这样就大大提高了,CPU,的利用率,也提高了,I/O,的速度。,6,2),实时控制,计算机用于控制时,外设可在任何时间发出中断请求,要求,CPU,进行处理,,CPU,一旦接收到中断请求,只要中断未被屏蔽,就可以立即响应并进行处理。这样快速及时的处理,在查询的工作方式下是做不到的。,3),故障处理,计算机在运行中会出现各种故障,如硬件错误、电源断电、存储出错、运算溢出等异常情况,,CPU,可利用中断系统进行处理。,7,7.2 8086,微处理器的中断方式,8086/8088,中断属矢量中断也叫类型中断。,8086/8088,系统可处理,256,种不同类型的中断,每个中断对应一个中断类型号,所以,256,种中断对应的中断类型号为,0,255,,这,256,种不同类型的中断可以来自外部,即由硬件产生,也可以来自内部,即由软件,(,中断指令,),产生,或者满足某些特定条件后引发,CPU,中断。,8,7.2.1,外部中断,外部中断是由,CPU,的外部中断请求引脚,NMI,和,INTR,引起的中断过程,可分为非屏蔽中断和可屏蔽中断两种。,1.,非屏蔽中断,若,CPU,的,NMI,引脚接收到一个有效高电平持续两个时钟周期以上的正跳变号,(,上升沿,),时,则可能会产生一次中断,由于这种中断的响应不受中断允许标志,IF,的控制所以称为非屏蔽中断。,非,屏蔽中断主要用于处理系统的意外或故障,如电源断电、存储器读写错误或受到严重的,信,干扰。在,IBM PC/XT,中的非屏蔽中断源有,3,种:浮点运算协处理器,8087,的中断请求、系统板,9,上,RAM,的奇偶校验错和扩展槽中的,I/O,通道错。以上,3,者中的任,何一个,都可以,单独提出中断请求,但是否真正形成,NMI,信号,还要受,NMI,屏蔽寄存器的控制。当这个屏蔽寄存器的,D7=1,时才允许向,CPU,发送,NMI,请求,否则即使有中断请求,也不能发出,NMI,信号。,NMI,屏蔽寄存器的端口地址为,A0H,,可以用,OUT,指令对这一位写入,1,或,0,,达到允许或禁止,NMI,的效果。,Intel,公司在设计,8086/8088,芯片时,已将非屏蔽中断,NMI,的中断类型号预先定义为类型,2,。因此,当,NMI,请求被响应时,不要求外部向,CPU,提供中断类型号,,CPU,在总线上也不发送,INTA,中断应答信号,而是,CPU,自动转入相应的中断服务程序。,10,2.,可屏蔽中断,可屏蔽中断是由用户定义的外部硬件中断。当外部中断源向,8086/8088CPU,的,INTR,引脚发送一个高电平中断请求信号时,该信号必须保持到当前指令的结束。这是因为,CPU,只在每条指令的最后一个时钟周期才对,INTR,引脚的状态进行采样,如果,CPU,采样到有可屏蔽中断请求产生,它是否响应还要取决于中断允许标志,IF,的状态。当中断允许标志,IF=0,时,,INTR,的中断请求被屏蔽,当,IF,1,时,则产生一次可屏蔽中断,并通过,INTA,引脚向产生中断请求的中断源发送两个中断应答信号的负脉冲。在接收到第二个负脉冲时,外部中断源接口电路自动将中断类型号送至数据总线,而,CPU,将自动从数据总线上读取被响应中断源的中断类型号,由中断类型号就可找到中断服务程序的入口地址。,11,7.2.2,内部中断,8086/8088,有相当丰富的内部中断功能。它们可以是由,CPU,内部硬件产生的,也可由软件的中断指令,INT n,引起的,其中,n,称为中断类型号。一部分已定义的中断类型号用于,CPU,的特殊功能处理。,1.,内部中断的种类,1),除法出错中断 类型号为,00H,在执行除法指令,DIV,或,IDIV,时,若除数为,0,或商超出了寄存器所能表达的数值范围,则立即产生一个类型号为,0,的内部中断,称为除法出错中断。除法出错中断既不由外部硬件产生,也不由软件指令产生,而是,CPU,自身产生的,因此,0,型中断没有对应的中断指令,即指令系统中没有,INT 0,这条指令。,12,2),单步中断,(,陷阱中断,),类型号为,01H,若,CPU,内的标志寄存器,FLAGS,中的跟踪标志,TF=1,且中断允许标志,IF,1,,则每执行完一条指令,,CPU,都将引起一次类型号为,1,的内部中断,称为单步中断。和除法出错中断类似,单步中断也不是由外部硬件或软件指令产生,而是由,CPU,对标志位,TF,的测试产生。单步中断是一种很有用的调试方法,每执行一条指令后停下来,显示所有寄存器的内容和标志位的值以及下一条要执行的指令,以便用户检查该条指令进行了什么操作,是否得到了预期结果。,13,对单步中断要注意三点:,所有类型的中断在其处理过程中,,CPU,会自动地把标志寄存器,FLAGS,压入堆栈,然后清除,TF,和,IF,。因此当,CPU,进入单步中断处理程序时,就不再处于单步工作方式,而以正常方式工作。只有在单步处理结束时,从堆栈中弹出原来的标志,才能使,CPU,又回到单步方式;,通常程序编制好后,在使用,DEBUG,调试程序时,可用单步中断检查程序,通过跟踪命令,T,来实现单步运行;,8086/8088,指令系统中没有设置或清除,TF,标志的指令,但指令系统中的,PUSHF,和,POPF,为程序员提供了置位或复位,TF,的手段。,14,3),断点中断 类型号为,03H,提供给用户一个调试手段,它的中断类型号为,3,。通常在,DEBUG,调试程序时,可通过运行命令,G,在程序中任意指定断点地址,当,CPU,执行到断点时便产生中断,同时显示当前各寄存器的内容和标志位的值以及下一条要执行的指令,供用户检查在断点以前的程序运行是否正常。设置断点实际上是把一条断点指令,INT 3,插入程序中,,CPU,每执行到断点处的,INT 3,指令便产生一个中断。,15,4),溢出中断 类型号为,04H,在执行溢出中断指令,INTO,时,若标志寄存器,FLAGS,中的溢出标志,OF=1,,则产生一个类型号为,4,的内部中断,称为溢出中断。对带符号数来说,溢出就意味着出错,(,加、减运算,),,一旦产生应立即发现,而,CPU,并不知道当前处理的数据是无符号数还是带符号数,只有程序员才明确这一点。因此通常在带符号数的加、减法运算后面总是跟着,INTO,指令,当标志寄存器的,OF=0,时,则,INTO,指令不产生中断,,CPU,继续运行原程序;当,OF=1,时,进入溢出中断处理程序,打印出一个错误信息,在处理程序结束时,不返回原程序继续运行,而是把控制交给操作系统。,16,5),指令中断,在,8086/8088,的指令系统中,当,CPU,执行中断指令,INT n,时,也能形成内部中断,其中,n,在理论上可取值,0,255,。当,n,0,、,1,、,3,、,4,时,就是上述的,4,种内部中断。实际上执行,INT n,软中断指令所引起的中断更像由,CALL,指令所引起的子程序调用,因此,用户在调试外部中断服务程序时可以用,INT n,指令来调用,即使类型号,n,与该外设的类型号相同,从而控制程序转入该外设的中断服务程序。,17,另外,INT n,中已有不少被微机系统的,ROM-BIOS,和,DOS,功能调用所定义,它们的操作大多涉及外设的,I/O,操作。,ROM-BIOS,是固化在只读存储器中的一组独立于,PC-DOS,的,I/O,服务例行中断子程序,称为基本,I/O,系统,(BIOS),。它在系统硬件的上一个层次,直接对系统中的,I/O,设备进行设备级控制,并以软中断形式向上一级软件,(,如,DOS,内核的设备驱动程序,),或用户程序提供,I/O,服务,供上层软件和用户调用。,DOS,系统功能调用提供了大量的中断服务程序。其中,INT 21H,是一个及其重要而且庞大的中断服务程序,它是,PC-DOS,的内核。,INT 21H,指令包含了,00H,6CH,功能子程序,可供系统软件和应用程序调用,故,称为系统功能调用。,18,2.,内部中断的特点,(1),除单步中断以外,所有内部中断都不能被屏蔽。,(2),所有内部中断都不能从外部接口中读取中断类型号。它既不发送中断响应信号,也不执行中断响应的总线周期。,(3),指令中断没有随机性,外中断是随机性的。指令中断是由程序中指令引起的,指令位置事先已知。外中断是随机性的,由,I/O,设备引起,何时引起事先未知。,(4),除单步中断外,所有内部中断的优先权都比外部中断的优先权高。,8086/8088,的中断优先级由高到低的顺序排列如下:,除法出错中断、,INT n,、,INTO,。非屏蔽中断,NMI,。,可屏蔽中断,INTR,。单步中断。,19,8.2.3,中断向量表,在程序执行过程中无法知道什么时候会出现中断请求,也就不能通过现行程序对中断事件进行处理。通常对于每个中断源都会有一个中断服务程序存放在内存中,而每个中断服务程序都有一个入口地址,即首地址。,CPU,只需取得中断服务程序的入口地址便可转到相应的处理程序去执行。因此关键问题是如何组织服务程序的入口地址。,8086/8088 CPU,是采用向量中断的方式来处理对可屏蔽中断的响应,向量中断是指连接外部中断源的接口电
展开阅读全文