740 likes | 1.02k Views
第 6 章 中断系统. 6.1 中断系统基本概念 6.2 中断的处理过程 6.3 IBM-PC 机中断系统结构 6.4 Intel 8259A 可编程中断控制器 6.5 8259A 的初始化编程 举例. 本章学习要点. 掌握有关中断的基本概念,中断类型码、中断处理过程, CPU 响应中断的条件。 掌握有关中断优先级、中断嵌套、中断屏蔽、中断矢量等基本概念。 了解 8086/8088 中断系统中的中断源分类,内部中断、外部中断的定义、响应和处理过程,中断向量表以及中断服务程序入口地址的形成方法及过程。
E N D
第6章中断系统 6.1 中断系统基本概念 6.2 中断的处理过程 6.3 IBM-PC机中断系统结构 6.4 Intel 8259A可编程中断控制器 6.5 8259A的初始化编程举例
本章学习要点 • 掌握有关中断的基本概念,中断类型码、中断处理过程, CPU响应中断的条件。 • 掌握有关中断优先级、中断嵌套、中断屏蔽、中断矢量等基本概念。 • 了解8086/8088中断系统中的中断源分类,内部中断、外部中断的定义、响应和处理过程,中断向量表以及中断服务程序入口地址的形成方法及过程。 • 掌握可编程中断控制器8259A的功能、内部结构、工作方式及初始化命令和操作命令的定义、使用方法,重点是初始化编程方法和8259A与系统的连接及简单应用。
现行程序 中断服务程序 断点 图6-1 中断响应、服务和返回 6.1 中断系统基本概念 中断的定义:所谓中断,指当计算机正在执行正常的程序时,计算机系统中的某个部分突然出现某些异常情况或随即事件,CPU这时就暂停它正在执行的程序,而转去执行申请中断的那个设备或事件的中断服务程序,执行完这个服务程序后,再自动返回到断点执行原来中断了的正常程序。这个过程或这种功能就叫做中断。 引起中断的原因或来源叫中断源。 6.1.1 中断系统的作用 6.1.2 中断源 返回本章首页
6.1.1 中断系统的作用 (1)并行处理 (2)故障处理 (3)实时处理 返回本节
6.1.2 中断源 引起中断的事件,即发出中断申请的来源,称为中断源。如机器故障、程序出错、外设请求、实时请求、电源掉电等。 CPU终止执行现行程序,转入对中断请求的处理,称为CPU对中断的响应。 中断源的种类概括起来可以分为:内部中断和外部中断。
内部中断源在处理器内部,根据其产生中断的原因又可分为异常中断和软中断。内部中断源在处理器内部,根据其产生中断的原因又可分为异常中断和软中断。 外部中断源主要包括: (1)外部设备 (2)实时时钟 (3)故障源 图6-2 中断源的种类 返回本节
6.2 中断的处理过程 6.2.1 中断请求 6.2.2 中断源识别 6.2.3 中断响应 6.2.4 中断处理 返回本章首页
中断处理过程一般来说包括中断请求、中断源识别、中断响应、中断处理和中断返回。下面以外部可屏蔽中断为例进行讨论。中断处理过程一般来说包括中断请求、中断源识别、中断响应、中断处理和中断返回。下面以外部可屏蔽中断为例进行讨论。
6.2.1 中断请求 1.中断请求的定义:用某种信号通知CPU,某台外设(中断源)正在请求CPU为它服务,需要CPU中断现行程序的执行。 2.中断请求的条件:第一、外设本身的准备工作已完成;第二、系统允许该外设发中断请求。 3.中断屏蔽: 每台中断源的接口电路都设置了一个中断屏蔽触发器,当此触发器在程序控制下,使触发器输出端置“1”时,允许中断,外设的中断请求能通过与(与非)门被送到CPU。若触发器输出端置“0”时,则中断被屏蔽掉,外设的中断请求就送不出去了。 返回本节
6.2.2 中断源识别 1.中断源确定: 在只有一个中断源提出中断请求时,需要找出是哪一个中断源发出了请求。 2.优先级判别: (1)中断优先级:根据各中断源的工作性质、缓急程度、重要性以及处理的方便性,而安排响应的级别顺序称为中断优先权,或叫中断优先级。 当CPU正在处理中断时,能响应更高级别的中断请求,而屏蔽掉同级或较低级别的中断请求。这就是所谓的中断判优。
中断源的识别常常有三种处理方法(如图6-3,6-4所示) (1)程序查询识别(软件查询法) (2)硬件查询法 (3)中断向量法(利用专门的中断优先权编码电路芯片支持的中断向量法。)
1)程序查询识别(软件查询法) 采用软件查询中断方式时,中断优先权由查询顺序决定,先查询的中断源具有最高的优先权。
在中断服务中读入请求状态 A申请 Y 中断源A服务程序 N B申请 Y 中断源B服务程序 N C申请 中断源C服务程序 Y N D申请 Y 中断源D服务程序 N 中断返回 图6-4 软件查询流程图
2)硬件查询法 • 用串行顺序链电路来取代前面的软件程序。将所有的中断源构成一个链(称为菊花链),利用外设连接在排队电路的物理位置来决定其中断优先权的,排在前面的优先权最高,排在最后面的优先权最低。 • 3)中断向量法 • 这种方法是为每一个中断源指定一个编号,称为中断类型码(中断向量码),每一个中断类型号都可以与一个中断服务程序相对应。系统通过不同中断源提供的不同的中断类型号来识别提出请求的中断源,并通过该类型码确定与中断源相对应的中断服务程序的入口地址(中断向量)。 • 电路中用一个中断优先级判别器(中断优先权编码电路)来判别哪个中断请求的优先级最高,然后在CPU响应中断时把此中断源所对应的中断类型码送给CPU,CPU根据中断向量码找到相应的中断服务程序的入口,执行相应的处理程序。
(2)单级中断处理和多级中断处理:单级中断处理不允许其他设备再中断CPU的程序;多级中断处理允许优先级高的中断打断优先级低的中断服务程序。(2)单级中断处理和多级中断处理:单级中断处理不允许其他设备再中断CPU的程序;多级中断处理允许优先级高的中断打断优先级低的中断服务程序。 (a)单级中断处理 (b)多级中断处理 图6-5 同时中断请求的处理方法 返回本节
6.2.3 中断响应 1. 中断响应: 就是如何找到中断服务程序入口的过程。 2.中断响应的条件 1)设置中断请求触发器,发出中断请求信号 2)设置中断屏蔽触发器,当此触发器为“1”时,允许外设的中断请求才能被送出至CPU。 3)CPU处于开中断状态。 4)CPU在一条现行指令结束之后响应中断。
3.中断响应的过程 1)发出中断响应信号。 2)同时自动关中断,即置中断允许触发器IF为“0”。 3)保存断点和现场。 4)获得中断服务程序的入口地址。 返回本节
6.2.4 中断处理 中断响应后,进入中断处理。中断处理是由硬件系统和中断服务程序共同完成的。 中断处理就是执行中断服务程序。中断服务程序有三部分组成: 1.起始部分—保护现场 2.主体部分—中断服务 3.结尾部分—恢复现场
图6-6 中断处理过程流程图 返回本节
6.3 IBM-PC机中断系统结构 6.3.1 8086/8088CPU的中断结构体系 6.3.2 8086/8088中断优先级别对中断源的管理 返回本章首页
6.3.1 8086/8088CPU的中断结构体系 图6-7 8086/8088的中断源
1.内部中断 • 内部中断又称软件中断。在8086/8088中,内部中断可分为五种中断: • 1)除法出错中断-0型中断 • 2)单步或陷阱中断-1型中断 • 3)断点中断-3型中断 • 4)溢出中断-4型中断 • 5) 用户自定义的软件中断-n型中断
内部中断的特点是: 1)是指令中指定的,或隐含的,或是预定的。 2)CPU不执行中断响应总线周期INTA。 3)除单步中断外,其他内部中断的优先级都比外部中断的要高,都不能被屏蔽(禁止)。 4)单步中断的优先级是所有中断里最低的,它可以用中断允许标志位TF置0来屏蔽。
2.外部硬件中断 外部中断也称为硬件中断,它是由硬件设备或外设接口产生的。 (1)非屏蔽中断NMI:不受中断允许标志IF的影响,它总是被CPU接受的, (2)屏蔽中断INTR:是否响应INTR的请求,取决于中断允许标志位IF的状态。
3.中断向量表 中断类型号:对每种中断都指定一个中断类型号代码,从0~255,每一个中断类型号都可以与一个中断服务程序相对应。中断服务程序存放在存储区域内,而中断服务程序的入口地址(中断向量)存在内存储器的中断向量表内。 中断向量表:是中断类型号与它相应的中断服务程序入口地址之间的转换表。 中断向量表在内存的低端的0~03FFH区域内的1K空间,每个向量占用了4个字节。前两个字节存放的中断处理子程序入口地址的偏移量地址,即IP的内容。后两个字节存放的是中断处理子程序入口地址的段地址,即CS的内容。
图6-8 中断向量表 中断向量在中断向量表中的首地址=中断类型码×4
例如,键盘中断的向量号为09H,09H4=24H,则键盘中断对应的中断矢量位于0000:0024H开始的4个单元中。过程如下:例如,键盘中断的向量号为09H,09H4=24H,则键盘中断对应的中断矢量位于0000:0024H开始的4个单元中。过程如下: 00001001 左移2位: 00100100 24H 中断服务程序的入口地址为:0BA9H:0125H
4.中断向量表的初始化 方法一:采用DOS系统功能调用。即INT 21H的25H号功能调用。 方法二:将中断服务程序的入口地址直接装入中断向量表中。 返回本节
6.3.2 8086/8088中断优先级别对中断源的管理 8086/8088检测出中断请求信号后,继续执行完当前的指令,再对中断作出处理。各种中断主要区别在于如何获取相应的中断类型码。 1、可屏蔽 2、非屏蔽 3、软中断
中断源 优先级 除法错、INT n,INT O 最高 NMI ↑ INTR 单步(陷阱) 最低 6.3.2 8086/8088中断优先级别对中断源的管理 中断优先级别
8086/8088中断响应和中断处理流程框图如图6-9所示。8086/8088中断响应和中断处理流程框图如图6-9所示。 图6-9 8086/8088中断响应和中断处理流程
1.8086/8088中断处理过程 • 1)将中断类型码乘4,指向中断向量表中的中断处理子程序的入口地址。 • 2)保存CPU的状态,即把标志寄存器PSW的内容压入堆栈。 • 3)清除IF和TF的状态标志位,屏蔽新的INTR和单步中断。 • 4)保存原来执行的主程序的断点,即把CS和IP的内容压入堆栈。 • 5)转中断处理子程序入口地址,即把所指向的中断向量表中的低字(16位)送入IP,高字(16位)送入CS。 • 6)执行中断处理子程序。 • 7)返回到被中断了的主程序的断点继续执行。
表6-1 8086/8088机中断源和中断类型号 2. 8086/8088的可屏蔽中断INTR 外部设备请求中断时,是通过INTR引脚向8086/8088CPU请求屏蔽中断。但请求INTR的外部设备不只一个,而INTR引脚只有一根,所以由一片8259A来管理多种中断源。它的8个中断请求输入端IRQ0~IRQ7连接8个中断源。中断的优先权IRQ0最高,IRQ7最低。 返回本节
6.4 Intel 8259A可编程中断控制器 6.4.1 8259A的内部结构和引脚 6.4.2 8259A的工作原理 6.4.3 8259A初始化命令字和操作方式命令字 返回本章首页
6.4.1 8259A的内部结构和引脚 1.功能及工作特点 8259A的主要功能:可接收外部的中断请求;能进行中断优先级管理;能向CPU提供外设的中断类型码。 8259A的特点: • 1)用1片8259A能管理8级中断,用2片8259A能管理15级中断,用9片8259A来构成64级的主从式中断系统。 • 2)每一级中断都可以屏蔽或允许。 • 3)8259A可提供相应的中断类型码,从而能迅速地转至中断服务程序。 • 4)通过编程使8259A工作在多种不同的方式。 • 5)工作时只需要一组+5V电源。
2.结构框图 图6-10 8259A内部结构框图
(1)中断请求寄存器IRR 用于接收外部的中断请求,与引腿IR7~IR0相连。当某些引腿有中断请求时,IRR的对应位置1。 (2)中断屏蔽寄存器IMR 用于对IRR某些位进行屏蔽。当某些中断被屏蔽时,IMR中的对应位置1。 (3)中断优先权判别电路 用来判断IRR中置1的各位优先级,只有新进入的中断请求优先级高于正在处理的中断时, 才能使ISR寄存器的对应位置1,并使8259A的INT有效有效。 (4)中断服务寄存器ISR 用于存放正在处理的中断级,当些中断级正在被处理时ISR的对应位置1。
(5)控制逻辑 用于控制8259A向CPU发中断请求及处理CPU的中断响应信号。INT与CPU的INTR信号相连。 (6)数据总线缓冲器 是8259A与CPU数据总线的接口。控制字、状态信息及中断类型码均通过该部件传送。 (7)读/写控制逻辑 接受CPU来的控制信号,控制8259A进行相应的读/写操作。 (8)级连缓冲器/比较器 用于级连工作,此时1片8259A为主片,其余1~8片8259A为从片。主片和从片的CAS0~CAS2端相连,主片为输出,从片为输入。
3.8259A的引脚 图6-11 8259A的引脚
表6-2 8259A读写操作及地址 4. 8259A寄存器及I/O端口的识别 • 8259A的引脚只有一个A0,这样8259A的端口只有两个,偶地址端口(A0=0)和奇地址端口(A0=1)。见表6-2所示。 返回本节
6.4.2 8259A的工作原理 • 1.8259A的工作过程 由于8259A是可编程的中断控制芯片,故在进入正常工作前,首先应对其进行初始化,也就是由CPU执行一段程序,向8259A写入若干控制字,使其处于指定的工作方式。当初始化完成后,8259A就处于就绪状态,随时可接受外设送来的中断请求信号。当外设发出中断请求信号后,8259A对外部中断请求的处理过程如下图:
2.8259A的工作方式 (1)中断触发方式 1)边沿触发方式 2)电平触发方式
(2)中断优先方式 1)固定优先级方式 ——为默认的方式 • 在此方式下,只要不重新设置其他优先级方式,所有中断请求的中断优先级就是固定不变的,8259A加电后就处于这种方式。在该方式,顺序依次为IRo、IR1、IR2……IR7,IRo最高,IR7最低。
2)优先级自动循环方式——由OCW2设置 中断请求信号IRn的优先级随着在中断处理的结束而改变。任何一级中断(IRn)处理结束时,其优先级降为最低,而使IRn+1的优先级变为最高,其他的级别以循环方式类推。 初始优先级规定为:IR0、IR1、IR2 …… IR7 例:当IR4中断结束后,优先级顺序变为:IR5、IR6、IR7、IR0、IR1、IR2、IR3、IR4
3)优先级特殊循环方式——由OCW2设置 初始的最低优先级由编程确定,其他同优先级自动循环方式。 例:如果确定IR5优先级最低,则IR6就最高。
(3)中断嵌套方式 1)一般完全嵌套方式 它的核心是在执行中断服务程序的过程中,只允许响应比该中断源优先级高的中断请求,而与它同级或优先级更低的中断源请求将被屏蔽。 2)特殊完全嵌套方式 特殊完全嵌套方式和一般完全嵌套方式基本相同,只有一点不同,就是在特殊完全嵌套方式下,当处理某一级中断时,如果有同级的中断请求,那么也会给予响应。从而实现一种对同级中断请求的特殊嵌套。而在一般完全嵌套方式中,只有当更高级的中断请求来到时,才会进行嵌套,当同级中断请求来到时,则不会给予响应。
(4)中断源屏蔽方式 按对中断源的屏蔽方式分为以下两种方式: 1.普通屏蔽方式 通过操作命令字OCW1使屏蔽寄存器IMR中的某一位或几位置1,来屏蔽对应位的中请求。在工作过程中,可以通过设置OCW1改变屏蔽情况。 2.特殊屏蔽方式 在中断处理过程中,在屏蔽本级 (用OCW1)的同时将ISR的对应位清”0”(开放低级中断)。此方式的设置和撤消由OCW3实现。适用于在一个中断程序中需要动态地改变系统的优先级结构。开放比本身的优先级别低级的中断请求。
(5)结束中断处理的方式 所谓的中断结束是指8259A结束中断的处理,而不是CPU结束执行中断服务程序。 中断结束处理分为自动结束方式和非自动结束方式。非自动结束方式又分为:一般的中断结束方式和特殊的中断结束方式。 1) 中断自动结束方式(自动EOI方式) 在响应某中断的第二个中断响应负脉冲INTA信号结束时,自动将ISR中的对应位清0。当中断结束时不用再送中断结束命令。ICW4的AEOI位设置。 适用于不会有中断嵌套的情况。因为此时任何一级中断服务程序,能被任何级别的中断请求所中断,可能会造成重复嵌套。
2)正常中断结束方式(普通EOI方式 ) 在全嵌套方式下,8259每得到一次EOI命令,将ISR中已经置位的各位中优先级最高的位复位。中断结束时,CPU向8259A发送一个EOI命令(使OCW2中的EOI=1,SL和R=0),8259A自动将ISR中的最高级的置1位清0。 适用于完全嵌套方式。 3)特殊的中断结束方式(特殊EOI方式) 优先级不固定时,无法知道ISR中的哪位优先级最高,所以需要指明结束哪个中断,既把相应的位清0。中断结束时,CPU向8259A发送一个特殊EOI命令(使OCW2中的EOI=1,SL=1,R=0,并给出要清0的IS位的代码),8259A将ISR中对应位清0。 适用于任何情况。 说明:在8259A级联方式下,一般用非自动结束方式。中断结束时,CPU要发两次中断结束命令:一次发给主片;另一次发给从片。
三种结束方式小结: 普通EOI方式:不需要在指令中说明已结束的哪一种中断的优先级别,指令形式简单。 特殊EOI方式:由于说明了结束的中断优先级别。因此,当无法确定当前正在处理的是哪级中断时,用它最理想 自动EOI方式:不需要在中断服务程序中安排EOI指令的。