120 likes | 243 Vues
第 8 章 中断 8.1 中断概述 8.1.1 中断的概念 中断是指计算机的 CPU 在执行主程序时,收到了外部的或内部的中断请求,因而暂时中止主程序的执行,转去执行一段预先编制好的中断服务程序来处理这一中断请求,待处理完毕之后,又返回主程序接着被中断处继续执行,这样的一个过程就称为中断。 8.1.2 中断源 中断源有以下几种: 1 .外设中断源。 2 .故障中断源。 3 .软件中断源。 4 .为调试而设置的中断源。.
E N D
第8章 中断8.1 中断概述8.1.1 中断的概念中断是指计算机的CPU在执行主程序时,收到了外部的或内部的中断请求,因而暂时中止主程序的执行,转去执行一段预先编制好的中断服务程序来处理这一中断请求,待处理完毕之后,又返回主程序接着被中断处继续执行,这样的一个过程就称为中断。8.1.2 中断源中断源有以下几种:1.外设中断源。2.故障中断源。3.软件中断源。4.为调试而设置的中断源。 第8章 中断8.1 中断概述8.1.1 中断的概念中断是指计算机的CPU在执行主程序时,收到了外部的或内部的中断请求,因而暂时中止主程序的执行,转去执行一段预先编制好的中断服务程序来处理这一中断请求,待处理完毕之后,又返回主程序接着被中断处继续执行,这样的一个过程就称为中断。8.1.2 中断源中断源有以下几种:1.外设中断源。2.故障中断源。3.软件中断源。4.为调试而设置的中断源。
8.1.3 中断类型1.外部中断源和外部中断 外部中断源即硬件中断源。8086提供了两个引脚来接收外部中断源的中断请求信号:可屏蔽中断请求引脚和不可屏蔽中断请求引脚。2.内部中断源和内部中断 内部中断源是来自CPU内部的中断事件。内部中断主要有以下几种情况:(1)除法错误(2)软件中断 ①中断指令INT n ②断点中断INT 3 ③溢出中断INTO (3)单步中断
3.中断优先级 系统将所有的中断划分为四级,以0级为最高,依次降低,各级情况如下:0级---除单步中断以外的所有内部中断1级---不可屏蔽中断2级---可屏蔽中断3级---单步中断8.1.4 中断类型号 系统中的每个中断源指定了一个唯一的编号,称为中断类型号。8086获取中断类型号的方法为:1.可屏蔽中断(硬件中断):由中断控制器8259提供。2.软件中断:在中断指令INT n 中,参数n即为中断类型号。3.除上面二种情况外,其余中断都是固定类型号:除法错(类型0)、单步中断(类型1)、断点中断INT 3(类型3)、溢出中断INTO(类型4),不可屏蔽中断(类型2)。
8.1.5 中断向量表 中断服务程序的地址叫做中断向量,将全部中断向量集中在一张表中,这张表叫做中断向量表。PC机中断向量表的位置固定在内存的最低1K字节中,即00000H~003FFH处。每一个中断服务程序的入口地址在表中占4字节:前2字节为偏移量,后2字节为段基址,如图8-1所示。8.1.5 中断向量表 中断服务程序的地址叫做中断向量,将全部中断向量集中在一张表中,这张表叫做中断向量表。PC机中断向量表的位置固定在内存的最低1K字节中,即00000H~003FFH处。每一个中断服务程序的入口地址在表中占4字节:前2字节为偏移量,后2字节为段基址,如图8-1所示。
8.2 中断处理过程8.2.1 中断请求中断处理的第一步是中断源发出中断请求,这一过程随中断源类型不同而出现不同的特点,具体如下:1.外部中断源的中断请求 ⑴.可屏蔽中断请求INTR引脚上的中断请求称为可屏蔽中断请求,这种请求8086是否响应取决于标志寄存器的IF标志位的值。IF=1为允许中断,8086可以响应INTR上的中断请求;IF=0为禁止中断。 由于外部中断源有很多,而8086的可屏蔽中断请求引脚只有一根,为解决多个中断源合理共用一根中断请求引脚的问题。PC机中引入了中断控制器8259A,如图8-2所示。
图8-2PC机可屏蔽中断结构 ⑵.非屏蔽中断请求NMI引脚上的中断请求称为不可屏蔽中断请求(或 非屏蔽中断请求),这种中断请求CPU必须响应。
2.内部中断源的中断请求 内部中断请求由CPU在下列两种情况下自动触发: 其一是在系统运行程序时,内部某些特殊事件发生(如除数为0,运算溢出或单步跟踪及断点设置等); 其二是CPU执行了软件中断指令INT n。PC机中完整的中断系统的结构如图8-3所示。 图8-3PC机中断系统结构
8.2.2 中断响应1.可屏蔽外部中断请求的中断响应 在可屏蔽外部中断请求的中断响应周期中,8086自动完成如下操作:(1)连续发两个中断响应信号INTA,完成一个中断响应周期。(2)保护现场。这包括将断点地址及标志寄存器FLAGS内容压入堆栈。(3)关中断,即将IF标志位清0。 (4)在中断响应周期的第二个总线周期中,中断控制器已将发出中断请求外设的中断类型号送到了系统数据总线上8086读取此中断类型号,并根据此中断类型号查找中断向量表,找到中断服务程序的入口地址,将入口地址中的段基址及偏移量分别装入CS及IP,一旦装入完毕,中断服务程序就开始执行。
2.不可屏蔽外部中断请求的中断响应对比可屏蔽中断请求的响应过程,NMI上中断请求省略2.不可屏蔽外部中断请求的中断响应对比可屏蔽中断请求的响应过程,NMI上中断请求省略 了第1步及第4步中的从数据线上读中断类型号,其余步骤相同。 3.内部中断的中断响应内部中断的中断响应除不用检测NMI引脚外,其余同不可 屏蔽外部中断请求的中断响应。 8.2.3 中断处理中断服务程序一般由4部分组成:保护现场、中断服务、 恢复现场、中断返回。
8.2.4 中断返回在中断服务程序的最后,应安排一条中断返回指令,以便完成向主程序的返回。 中断返回指令指令的格式为:IRET 中断返回指令完成如下功能: (1)从栈顶弹出一个字→IP, (2)再从栈顶弹出一个字→CS, (3)再从栈顶弹出一个字→FLAGSIRET指令执行完后,CS、IP恢复为原中断前的值,CPU从断点处继续执行原程序。在所有中断处理过程中,以可屏蔽中断的过程最为复杂,如图8-5所示。8.2.4 中断返回在中断服务程序的最后,应安排一条中断返回指令,以便完成向主程序的返回。 中断返回指令指令的格式为:IRET 中断返回指令完成如下功能: (1)从栈顶弹出一个字→IP, (2)再从栈顶弹出一个字→CS, (3)再从栈顶弹出一个字→FLAGSIRET指令执行完后,CS、IP恢复为原中断前的值,CPU从断点处继续执行原程序。在所有中断处理过程中,以可屏蔽中断的过程最为复杂,如图8-5所示。