您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 第6章 输入输出和中断技术(下)
第6章输入/输出和中断技术掌握有关中断和中断源、中断处理过程、中断优先级和中断嵌套等基本知识掌握可编程中断控制器8259A外部特性及其与CPU的连接方式掌握8259A的初始化编程掌握8086/8088可屏蔽中断的全过程了解8259A的结构及级联方式的运用等教学目的和要求中断及中断控制器重点中断及中断处理过程8259A的初始化编程8086/8088可屏蔽中断的全过程难点8086/8088的中断系统中断优先权的控制机理6.3.1中断、中断源及中断系统一、中断、中断源所谓“中断”是指在CPU正常运行程序时,由于内、外部事件引起CPU暂时中止正在运行的程序,转而去执行请求CPU暂时中止的内、外部事件的服务程序,待该服务程序处理完毕后又返回到被中止的程序能够向CPU发出中断请求的中断来源称为“中断源”常见的中断源一般的输入/输出设备,如打印机、RS232C串行通信设备等数据通道,如磁带、磁盘等实时时钟,如定时器芯片82C54等的定时输出作为定时中断请求信号故障信号,如电源掉电等软件中断,如为调试程序而设置的单步中断广义中断在80286以后的处理器中均将广义中断分为中断和异常两大类:由外部事件引起的中断称为外部中断,由内部事件引起的中断称为内部异常二、中断系统的功能为满足中断要求,中断系统应具有的功能可归结为中断处理和中断控制中断处理包括发现中断请求、响应中断请求、中断处理与中断返回中断控制主要是实现中断优先级的排队和中断嵌套三、中断的主要用途在微机系统中,中断的主要用途是实现输入/输出操作电源掉电或其他情况的报警控制台或人工干预多处理机系统中各处理机之间的协调控制操作系统四、可屏蔽中断与不可屏蔽中断根据微处理器内部受理中断请求的情况,中断可分为可屏蔽中断与不可屏蔽中断两种凡是微处理器内部能够“屏蔽”的中断,称为可屏蔽中断凡是微处理器内部不能“屏蔽”的中断,称为不可屏蔽中断所谓“屏蔽”是指微处理器拒绝响应中断请求信号,不允许中断微处理器所执行的主程序。这通常是由内部的中断触发器(或中断允许触发器)来控制的6.3.2中断处理过程微机系统中断处理过程的流程图如图7-1所示一、CPU响应中断的条件1.设置中断请求触发器每个中断源向CPU发出中断请求信号是随机的,而大多数CPU都是在现行周期结束时,才检测有无中断请求发出,故在现行指令执行期间,必须把随机输入的中断请求信号锁存起来,并保持到CPU响应这个中断请求后才可以清除中断请求。因此,要求每一个中断源有一个中断请求触发器,如图7-2中所示2.设置中断屏蔽触发器在存在多个中断源的情况下,为增加控制的灵活性,常要求在每一个外设的接口电路中,设置一个中断屏蔽触发器,只有当此触发器为“1”时,外设的中断请求才能被送到CPU,如图7-2中所示,可把8个外设的中断屏蔽触发器组成一个中断屏蔽寄存器端口,用输出指令来控制它们的状态3.CPU内部设置中断允许触发器的状态在CPU内部有一个中断允许触发器,只有当其为“l”时,CPU才能响应中断;若其为“0”时,即使中断请求线上有中断请求,CPU也不响应可用允许中断和禁止中断指令来设置中断允许触发器的状态当CPU复位时,中断允许触发器也复位为“0”,即关中断。当中断响应后,CPU就自动关闭中断,以禁止接受另一个新的中断,因而通常在中断服务程序结束之前,必须要执行两条指令,即允许中断指令和中断返回指令4.CPU在现行指令结束后响应中断在满足上面三个条件的情况下,CPU在执行现行指令的最后一个机器周期(总线周期)的最后一个时钟周期(T状态)时,才测试中断输入线INTR(或NMI),若发现中断请求有效,则把内部的中断锁存器置“1”,下一总线周期进入中断响应周期二、CPU对中断的响应过程进入中断周期后,中断响应的过程如下⒈关中断CPU在响应中断后,发出中断响应信号,同时内部自动地关中断,以禁止接受其他的中断请求。⒉保护断点把断点处的标志寄存器F的内容、段寄存器CS值和指令指针IP值依次压入堆栈保存,以便中断处理完后能正确地返回到主程序的断点地址,接着执行被中断的程序INTACPU对中断的响应过程⒊识别中断源CPU要对中断请求进行处理,必须要找到相应中断服务程序(处理中断的程序)的入口地址,这就是中断源的识别CPU对中断的响应过程⒋保护现场为了不使中断服务程序的运行影响主程序的状态,必须把断点处有关寄存器(指在中断服务程序中要使用的寄存器)内容压入堆栈保护⒌执行中断服务程序⒍恢复现场即把中断服务程序压入堆栈的现场信息从堆栈中弹出来,并存入到原寄存器中,这是在中断服务程序中用POP指令来实现的CPU对中断的响应过程⒎开中断与返回开放中断在返回之前,目的是返回主程序后能继续响应新的中断请求。从中断返回到断点处,有一条专门的中断返回指令,该指令的隐操作是将堆栈栈顶处连续的三个字依次弹出给指令指针IP、段寄存器CS以及标志寄存器F识别中断源有两种方法-1查询中断当外设没有提出中断请求时,CPU照常执行主程序,只有在接收到外设的中断请求后CPU才去查询,以识别提出中断请求的设备,主要采用软件查询。软件查询是用程序查询的方法,查询中断请求寄存器的当前值,查询程序依次查询每一个外设的中断状态位,通过测试该状态位来判断对应的外设是否发出过中断请求,如果有,则转到相应的中断服务程序识别中断源有两种方法-2向量中断(VectoredInterrupt)又称矢量中断,在具有向量中断的微机系统中,每个外设都预先指定一个中断向量,当CPU识别出某个外设请求中断并予以响应时,控制逻辑就将该外设的中断向量送入CPU,以自动地提供相应的中断服务程序的入口地址,转入中断服务。用向量中断来确定中断源主要是用硬件来实现的,通常在微机系统中采用可编程中断控制器来提供中断向量6.480X86/Pentium中断系统8086/8088有一个简单而灵活的中断系统,每个中断都有一个中断类型码(TypeCode),以供CPU进行识别,8086/8088最多能处理256种不同的中断类型。中断可以由CPU以外的硬件设备驱动,也可由软件中断指令启动。在某些情况下,也可由CPU自身启动,8086/8088的中断源如图7-3所示。从图可见8086/8088的中断源可分为两类,即外部中断和内部中断一、外部中断8086/8088有两条中断信号线—INTR和NMI,可供外设向CPU发中断请求信号可屏蔽中断INTR可屏蔽中断请求线INTR通常由中断控制器82C59A驱动,该控制器又同需要中断服务的外部设备相连。CPU通过向82C59A写命令字来控制82C59A的工作,82C59A负责管理多个外设以中断方式与CPU交换数据,例如,82C59A接收与其相连接的外部设备送来的中断请求,并判断提出中断请求的哪一个外部设备的优先级最高,如果被选中设备的优先级比现行正接受服务的设备(如果有的话)的优先级高,就启动8086/8088的INTR线可屏蔽中断INTR当INTR信号有效(为“1”)时,CPU将根据中断允许标志IF的状态而采取不同的措施。如果IF=“L”(置0),表示INTR线上的中断屏蔽(Masked)或禁止(disabled),CPU将不理会该中断请求而处理下一条指令,由于CPU并不锁存INTR信号,因此INTR信号必需保持有效状态,直到接收到响应信号或撤消请求为止。如果IF=“H”(置1)表示INTR线上的中断开放,CPU在完成现在正在执行的指令后,识别该中断请求,并进行中断处理。中断允许标志IF可以用STI(中断允许位置位)指令或CLI(中断允许位清零)指令来设定。也可以将命令写入82C59A,从而有选择地屏蔽82C59A所控制的中断申请输入设备可屏蔽中断INTRCPU对INTR中断请求的响应过程是执行两个(中断响应)总线周期,如图7-4所示。如果在中断响应周期内出现一个总线保持请求(HOLD—最小方式,或RQ/GT—最大方式),那么在两个中断响应周期结束以前不会接受这个请求。在8086/8088的最大方式下,在这两个中断响应周期内输出信号,以通知其他处理器不能再试图控制总线INTALOCK可屏蔽中断INTR在第一个中断响应周期内信号通知82C59A,中断请求已被接受;在第二个中断响应周期内信号有效时,82C59A必须把请求服务的那个设备的中断类型码(0~255)送到数据总线,该中断类型码是82C59A的初始化过程中由8086/8088写入的。CPU读入该中断类型码后,由此调用相应的中断服务程序。INTAINTA可屏蔽中断INTR不可屏蔽中断NMI⒉不可屏蔽中断NMI不可屏蔽中断请求信号NMI用来通知CPU发生了“灾难性”的事件,如电源掉电、存储器读写出错、总线奇偶位出错等。NMI线上中断请求是不可屏蔽的(即无法禁止的),而且立即被CPU锁存,因此NMI是边沿触发的,不需要电平触发。NMI的优先级比INTR高。由于不可屏蔽中断的类型号预定为2,在CPU响应NMI时,不必由中断源提供中断类型码,因此,NMI响应也不需要执行中断响应总线周期不可屏蔽中断NMICPU识别一个外部中断请求所需的时间称为“中断等待时间”,这取决于执行完现行指令还需要多少个时钟周期。一般而言,在执行乘法、除法、移位或循环指令时,如果接到外部中断请求,其等待时间最长二、内部中断内部中断是通过软件调用的不可屏蔽中断,包括溢出中断、除法出错中断、单步中断、INTn指令中断以及单字节INT3指令中断⒈溢出中断如果上一条指令使溢出标志OF置“1”,那么在执行溢出中断指令(INTO)时,立即产生一个4型中断(中断类型码为4)⒉除法出错中断在执行除法指令DIV或IDIV后,如果商大于规定的目标操作数(即目标寄存器所能表达的范围),则CPU立即产生一个0型中断⒊INTn指令中断8086/8088的指令系统中有一条INT指令,当执行完这条指令就立即产生中断。CPU根据该指令中的中断类型码n,确定调用哪个服务程序来处理这个中断⒋断点中断(BreakpointInterrupt)断点中断即单字节INT3指令中断,中断类型码为3,该中断是专供调试程序设置断点所使用的,断点一般可以处于程序中任何位置。在断点处,停止当前程序的执行,CPU按中断类型码为3来响应中断。通常,在调试时把断点插入程序中的关键之处,以便检查并显示当前寄存器以及存储单元的内容,便于调试程序⒌单步(陷阱)中断当陷阱标志TF置“1”时,8086/8088处于单步工作方式。在单步工作时,每执行完一条指令,CPU就自动产生一个类型号为1的中断,作为中断处理过程的一部分,CPU将自动地把标志寄存器和断点值(CS:IP)压入堆栈,然后清除TF和IF,CPU进入单步中断处理过程,它就不会以单步工作方式来执行程序,而以正常的方式执行单步处理的中断服务程序。当单步中断过程结束时,从堆栈中弹出原来的断点值(CS:IP)及标志寄存器F的内容,使CPU返回单步方式单步方式是一种有用的调试工具,它使单步过程成为能逐条指令地观察系统操作的一个“窗口”。例如,单步中断过程可以在每执行一条指令后打印或显示寄存器内容、指令指针的值,以及关键的存储器变量等。这样就能详细地跟踪一个程序的具体执行过程,确定问题的所在上述所有内部中断的特点是•中断类型码或者包含在指令中,或者是预先规定的•不执行响应外部中断的中断响应周期•除单步中断外,任何内部中断都无法禁止•除单步中断外,任何内部中断的优先级都比任何外部中断的优先级高中断优先级8086/8088的中断优先级见表7-1表7-1中断优先级中断优先级除法出错,INTn,INTO最高NMI…INTR…单步最低三、中断向量表中断向量表又称中断指针表,是存放中断服务程序入口地址(即“中断向量”)的表格。它存放在存储器的最低端(0000H:0000H~0000H:03FFH),共1024个字节,每4个字节存放一个中断服务程序的入口地址,一共可以存放256个中断服务程序的入口地址。较高地址的两个字节存放中断服务程序入口的段基值;较低地址的两个字节
本文标题:第6章 输入输出和中断技术(下)
链接地址:https://www.777doc.com/doc-3803903 .html