《中断和异常3学时》PPT课件.ppt_第1页
《中断和异常3学时》PPT课件.ppt_第2页
《中断和异常3学时》PPT课件.ppt_第3页
《中断和异常3学时》PPT课件.ppt_第4页
《中断和异常3学时》PPT课件.ppt_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 /71,第8章 中断和异常,8.1 概述 8.2 中断 8.3 异常 8.4 中断及异常的暂时屏蔽 8.5 中断及异常的优先级 8.6 实方式下的中断 8.7 保护方式下的中断和异常 8.8 中断优先级管理器8259A PIC,2 /71,本章重点,中断的概念 实方式下的中断处理 保护方式下的中断和异常 中断优先级管理器,3 /71,8.1 概 述,一、什么是中断 二、中断源和中断优先权 三、中断服务程序 四、断点和中断现场 五、硬件中断和软件中断,4 /71,一、什么是中断,在CPU正常运行程序时,由于内部或外部某个非预料事件 或指定的事件的发生,如:外部事件,电源掉电,硬件故障,传输错, 存贮错,运算错及操作面板要求服务等。使CPU暂停正在运行的 程序,而转去执行处理引起中断事件的程序,处理完毕 然后再返回被中断了的程序,继续执行。这个过程就是 中断。,5 /71,CPU执行流程,6 /71,二、中断源和中断优先权,引起中断的因素很多, 将发出中断申请的外设或内部的原因,称为中断源 给每个中断源指定一个优先权,称为中断优先权 当多个中断源同时发出中断请求时, CPU按照中断优先权的高低顺序,依次响应。,7 /71,三、中断服务程序,处理中断源,完成其所要求功能的程序, 称中断服务程序(中断例行程序、中断子程)。,8 /71,非预料事件是指事件发生的时间无法预知, 即中断源何时产生中断不确定,是随机的。 但事件的性质及处理方法则是已知的, 确定的, 即 中断服务程序是事先编写好的, 只是何时执行未知。,中断源产生中断的随机性, 使中断服务程序的执行也具有随机性, 即何时执行中断服务程序不是在程序中安排好的。,9 /71,四、断点和中断现场,断点: 是指CPU执行的现行程序被中断时的下一条指令 的地址,又称断点地址。 中断现场: 是指CPU转去执行中断服务程序前的运行状态, 包括CPU内部各寄存器、断点地址等。,10 /71,1000:150H,、 、 、 、 、 MOV AX, 0 ADD AX, DX MOV DI , AX 、 、 、 、 、 PUSH AX 、 、 IRET,CPU在执行此指令时, 某中断源发申请中断; CPU在执行完该指令后,转去执行中断子程,地址1000:150H为断点,断点概念:,11 /71,早期中断概念的引入, 是为解决CPU与外设间的速度匹配问题,提高CPU的工作 效率。中断源主要是由外部硬件产生。,五、硬件中断和软件中断,当今的中断技术, 不再限于外部硬件产生中断(称硬件中断或外中断 ), 还可由CPU内部产生 (如被零除操作),或者由程序预先 安排,即由指令调用的中断服务程序。(称软件中断或 内中断)又称为异常中断 将硬件中断或外中断统称中断 ,将软件中断或内中断统称异常,12 /71,异常是指令执行期间检查到的不正常或非法的状态,使指令不能正常执行而产生中断。这与所执行的指令有直接的关系。 它源于CPU的内部, 通常将软中断指令也归于异常,13 /71,8.2 中 断,80386,80486支持两种类型的外部中断:可屏蔽中断及不可屏蔽中断(非屏蔽中断),并有相应的两个中断请求引脚信号-INTR及NMI. 1、 可屏蔽中断 经由INTR信号(高电平有效)请求的中断称为可屏蔽中断.它受IF的影响和控制.当IF被软件采用STI指令置1时,表明INTR被允许,CPU响应INTR.当IF被软件采用CLI指令置0时,表明INTR被禁止,CPU不响应INTR。 2、 非屏蔽中断 经由NMI信号线(上升沿触发有效)请求的中断称为非屏蔽中断。它是不被IF禁止的中断。,14 /71,8.3 异 常,1、 异常分类 产生异常后,系统根据引起异常的程序是否可被恢复这一原则,进一步又把异常分为故障(fault)、陷阱(trap)和中止(abort)3类异常。 故障异常 是引起故障的程序可被恢复执行的异常,它也是在引起故障的指令执行之前就报告给系统的一种异常.故障被检出时,保护断点(指向引起故障的指令)故障处理完毕,返回到引起故障的指令,使该指令得以正确执行。 陷阱异常 是在指令执行期间被检测到的,并在引起异常的指令执行之后向系统报告的一种异常.陷阱产生后,保护断点(指向引起陷阱的指令的下一条应该执行的指令地址),程序转向异常处理 。 中止异常 是微处理器面临严重错误时产生的异常。中止时,正执行程序不能被恢复。,15 /71,2、 异常错误码,产生异常时CPU在异常处理程序的栈中压入一个异常错误码 异常错误码位于特定的堆栈中, 无错异常压“0”。,选择器索引,保留,选择器索引,15,域 值 描述 D0:EXT =0 中断的程序引起异常 =1 外部事件引起异常 D1:IDT =0 由TI位决定表 =1 选择器用于IDT中 门描述符 D2:TI =0 选择器用于GDT =1 选择器用于LDT D3-D15 选择器索引,3 2 1 0,80286,80386/80486,异常错误码格式:,EXT,EXT,IDT,IDT,TI,TI,31,指向与异常相关的表项,16 /71,3、 处理器定义的异常 处理器定义的异常是80X86处理器中保留自用的异常,共16个. 1、异常0 定义为除法出错异常,是一种故障型异常 2、异常1 定义为排错异常(调试异常),有故障类或陷阱类,其中单步为陷阱型异常 3、异常3 为断点中断,是一个采用单字节指令INT3的软件中断,属陷阱型异常 4、异常4 定义为溢出陷阱,属陷阱型异常 5、异常5 定义为边界检查故障,属故障型异常,17 /71,6、异常6 定义为无效操作码故障,属故障型异常 7、异常7 定义为协处理器无效故障,属故障型异常 8、异常8 定义为双重故障,属中止型异常 9、异常9 定义为协处理器段越界异常,属中止型异常 10、异常10 定义为无效TSS故障,属故障型异常 11、异常11 定义为段不存在异常,属故障型异常,18 /71,12、异常12 定义为栈段故障,属故障型异常 13、异常13 定义为通用保护故障,属故障型异常 14、异常14 定义为页故障,属故障型异常 页故障时的错误码格式 15、异常16 定义为协处理器出错故障,属故障型异常 注意:由INT n 定义的软中断为陷阱型异常,未定义,31 3 2 1 0,U/S R/W P,域 值 描述 P =0 失效由不存在页引起 =1 失效由页级别保护冲突引起 R/W =0 失效由读引起 =1 失效由写引起 U/S =0 失效发生在管理方式 =1 失效发生在用户方式,19 /71,8.4 中断及异常的暂时屏蔽,中断和排错异常在某些条件下可被忽略或屏蔽 6种引起中断和排错异常可被忽略或屏蔽的条件: 1、EFLAGS中的IF=0,屏蔽外部可屏蔽中断. 2、IF=0时,执行STI指令,则在STI指令及下面一条指令执行期间,屏蔽外部可屏蔽中断. 3、EFLAGS中的RF=1,屏蔽排错故障. (RF为调整恢复标志:RF=0,调试故障被接受, RF=1,调试故障被忽略) 4、系统正处理一个非屏蔽外部中断,则屏蔽任何新的非屏蔽中断。 5、执行以SS为目的寄存器的MOV及POP指令时,将在该指令及下面一条指令执行期间屏蔽各种中断及排错异常. 6、在指令前缀LOCK及被锁定的指令之间不允许中断。,20 /71,8.5 中断及异常的优先级,中断/异常类型,优先级,排错故障,非排错故障,陷阱指令INT n 、 INTO,NMI中断,INTR中断,最高,最低,中断/异常的优先级,排错陷阱,21 /71,一、实方式下的中断分类 按中断源的不同,中断分为内部中断和外部中断。,1、内部中断(软中断) 指CPU执行某些特殊操作或由INT指令引起的中断 被零除操作或OF=1时执行INTO指令引起 使用DEBUG中的单步或断点设置操作引起 执行INT n 指令引起,8.6 实方式下的中断,22 /71,23 /71,可屏蔽中断 由INTR引脚引起的中断,称可屏蔽中断。 CPU是否响应INTR引脚上的中断请求取决于IF标志: IF=1,CPU响应INTR引脚上的中断请求 IF=0,CPU不响应INTR引脚上的中断请求 即当IF=0时,将INTR引脚上的中断申请屏蔽。,非屏蔽中断 由NMI引脚引起的中断,称非屏蔽中断。 当NMI引脚上产生上升沿信号,CPU必响应此中断请 求,即NMI引脚上的中断请求不受IF标志的控制, IF不能屏蔽NMI引脚上的中断请求。,24 /71,保留,中断逻辑,INTn,指令,INTO,指令,除法,错误,单步,TF=1,非屏蔽中断请求,IR,0,IR,6,IR,5,IR,4,IR,3,IR,2,IR,1,IR,7,可编程,中 断,控制器,(PIC),8259A,INT,n,4,1,2,CPU,INTR,NMI,08,09,0A,0B,0C,0D,0E,0F,系统定时器,键盘,保留(打印机),软盘,串行通信接口,保留(通信),彩色/图形接口,实方式下的中断源,INT3 指令,3,0,25 /71,当有多个中断源同时产生中断申请时, CPU先响应优先权最高的中断源, 再响应优先级较低的中断源。,二、实方式下的中断优先权,26 /71,三、实方式下的响应中断的过程,当中断源产生中断申请后, 不论是内中断、非屏蔽中断,还是可屏蔽中断, 只要满足响应条件,在执行完当前指令后, CPU内部硬件会自动完成下列响应中断的过程:, 取中断类型号N 当前PSW的内容入栈 清IF、TF标志为0 当前CS的内容入栈 当前IP的内容入栈 取内存单元( 0 : N 4 )字内容送IP 取中断子程 取内存单元( 0 : N 4 + 2 )字内容送CS 入口地址 此时CS:IP指向中断程序的入口,开始执行中断程序。,保存现场,27 /71,当前指令执行完的含义,CPU正在执行一条指令,执行完本条指令,响应中断;,对于带重复前缀的串指令(如REP MOVSB),执行一次,重复和串指令即可响应中断;,对MOV和POP指令,处理对象为段寄存器,,以及STI和IRET指令执行完本条指令后,,再执行一条指令才响应中断。,28 /71,0:3FFH,0:0,例:,29 /71,从中断子程返回断点处,靠的是执行中断子程最后的指令IRET,从堆栈中取出断点地址给CS:IP,继续执行被中断的程序。故中断子程最后应安排IRET 指令。,30 /71,四、实方式下如何获取中断类型号,由前面介绍知,当中断源产生中断请求后, 不论是内中断、非屏蔽中断,还是可屏蔽中断, 只要满足响应条件,在执行完当前指令后, CPU内部硬件会自动完成响应中断的过程, 共七个步骤,而第一步就是获取中断类型号。,31 /71,四、实方式下如何获取中断类型号,不同的中断源,实方式下获取中断类型号的方法不同:,1)异常、软中断、非屏蔽中断的矢量号 由CPU分配或由INTn指令提供 2)外中断外设提供,32 /71,STI,IP,CS,PSW,CPU和总线控制逻辑,(1)条件 IF=1 NMI=0 HOLD=0 无内部中断,INTR,INTA,D0D7,8259A,INT,INTA,D0D7,IR0,IR1,IR7,外 设 中 断 请 求,(6),0 IF 0 TF,(5) 保 护 断 点,(9) 返 回 主 程 序,4*N,4*N+2,IP,CS,PSW,(2)中断请求,主程序,(7),(4*N) IP (4*N+2) CS,转入中断处理程序,(2)中断请求INT=1,(3)INTA=0送8259A,(4)类型码N送CPU,(7)转入中断处理程序,(9)返回主程序,(8)开中断,中断处理程序,IRET,可屏蔽中断的响应和处理过程,可屏蔽中断的响应和处理过程:,IVT,堆栈,33 /71,五、中断处理程序,保护现场 中断服务程序 恢复现场 中断返回,34 /71,作业,P345: 2 , 5,35 /71,8.7 保护方式下的中断和异常,基地址,限量,中断描述符表,中断N的门,中断N-1的门,8N,8(N-1),中断2的门,中断1的门,中断0的门,10H,8,0,15 0,保护方式的中断描述符表,保护方式下,发生中断和异常时, 使用中断描述符表IDT(共256项每项8字节的中断描述符组成) IDT在内存中的位置由中断描述符表寄存器IDTR给出(48位),IDTR,IDT,47,16,36 /71,中断门 IDT中每项可能含: 陷阱门 任务门 中断类型号8用来索引IDT中一个门 通过中断门或陷阱门 只能使程序转移到当前任务的中断(异常)处理程序 通过任务门 能使程序转移到不同任务的中断(异常)处理程序,37 /71,15 14 12 11 8 7 0,保留(必须为0),P DPL 0 类型 未用,代码段选择器,偏移量,80268 中断或陷阱门,6,4,2,0,15 0,80386/80486 中断或陷阱门,6,4,2,0,偏移量(高),P DPL 0 类型 000 保留,代码段选择器,偏移量,15,0,任务门,保留,P DPL 0 类型,保留,TSS段选择器,保留,6 4 2 0,中断描述符格式,P:存在位 DPL:描述符特权级 类型: 0101任务门 0110/1110中断门 0111/1111陷阱门 DPL字段仅在INT n 和INTO指令时被检 验,且要求CPL 高于或等于DPL,类型0110/0111,类型1110/1111,38 /71,入口点,中断描述符表,Selector,Attributes,Offset,全局或局部描述符表,线性地址空间,Base Limit Attributes,通过中断门或陷阱门的转移: IDT描述符为中断门或陷阱门则 中断程序与当前程序为同一任务, 中断程序地址由中断门或陷阱门提供,8.7.1 通过中断门及陷阱门的转移,39 /71,通过中断门及陷阱门的转移,(1)门中选择子指向一致代码段 代码段描述符中DPL级别=CPL级别 同一特权级的转移: (2)门中选择子指向非一致代码段 代码段描述符中DPL=CPL 向内层的转移: 门中选择子指向非一致代码段 代码段描述符中DPL级别CPL级别 (堆栈也切换到内层栈),类似于通过调用门执行CALL指令,40 /71,通过中断门或陷阱门向内层转移时 堆栈的切换:,向内中断,向外返回,堆栈 向下 增长,内层栈,外层栈,IRET前的 ESP指针,中断后的 ESP指针,中断前及IRET 后的ESP指针,SS,0,LIMIT,LIMIT,SS,0,Outer SS Outer ESP Outer EFLAGS Outer CS,Outer EIP,Error Code,当前TSS提供初值,0-TF 0-NT 0-IF(中断门) IF保持(陷阱门),41 /71,Copied,Outer SS,Outer ESP,P1,P2,P3,P4,Outer CS,Outer EIP,P1,P2,P3,P4,调用后,返回前的ESP指针,调用前的ESP指针,0,返回后的ESP指针,Limit,0,内层栈,外层栈,栈向下增长,Limit,向内调用,向外返回,比较: CALL指令通过调用门向内层程序转移时,栈切换:,CALL指令通过调用门向内层程序转移时,栈切换- 进行参数拷贝 通过中断门或陷阱门向内层转移时, 栈切换-不进行参数拷贝,42 /71,8.7.2 中断(或异常)的返回,(1)执行IRET前,中断(异常)处理程序将 错误码弹出 (2)执行IRET时,弹出外层EIP、CS值 恢复断点 (3)弹出外层EFLAGS值 (4)对弹出的CS选择子的RPL字段进行检验 RPL=CPL不改变特权级 RPLCPL改变特权级 (5) 若RPLCPL(RPL具有更外层特权级)则弹出外层ESP、SS值恢复外层栈,43 /71,8.7.3 通过任务门的转移,(1)中断发生时, 中断类型号8用来索引IDT中一个门 (2)若为任务门 转移到不同任务的中断(异常)处理程序 (3)任务门提供一个16位选择子指向 处理程序任务的TSS段 (4)转入中断(异常)处理程序,1-NT (5)中断返回时,IRET从当前TSS的LINK字段得到返回到的任务的TSS选择子,44 /71,8.7.4 小结,保护方式下中断(异常)发生时: 使用IDT 中断门 IDT中每项可能含: 陷阱门 任务门 中断类型号8用来索引IDT中一个门 通过中断门或陷阱门 只能使程序转移到当前任务的中断(异常)处理程序 通过任务门 能使程序转移到不同任务的中断(异常)处理程序,45 /71,保护方式下中断(异常)发生时: 通过中断门或陷阱门 当前任务内转移 速度较快 通过 任务门 任务切换 速度较慢,46 /71,8.8 中断优先级管理器8259A PIC,8259A是一种可编程的中断优先级管理器芯片 每一片8259A可管理8级优先级中断 最多可用9片组成两级中断机构,管理64级中断,47 /71,8.8.1 8259A的内部结构及引脚信号,1 2 3,28 27 26 25 24 23 22 21 20 19 18 17 16 15,CS WR RD D7 D6 D5 D4 D3 D2 D1 D0 CAS0 CAS1 GND,Vcc A0 INTA IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0 INT SP/EN CAS2,8259A引脚图,789,101112,56,1314,4,数据线,中断请求信号,中断请求-CPU,中断响应-CPU,级联信号,级联信号,控制信号,控制信号,48 /71,数据总线 缓冲器,读/写 控制电路,级联缓冲 器/比较器,控制 电路,中断 服务 寄存器 (ISR),优先权 判别器 (PR),中断 请求 寄存器 (IRR),中断屏蔽寄存器 (IMR),IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7,内部总线,D0D7,RD WR,A0 CS,CAS0 CAS1 CAS2,SP/EN,INTA INT,8259A的结构框图,49 /71,8259A内部结构,(1)IRR: 中断请求寄存器(8bit) 寄存外设来的中断请求信号IR0IR7 (2)IMR: 中断屏蔽寄存器(8bit) 置1的位使相应中断被屏蔽 (3)ISR: 中断服务寄存器(8bit) 置1的位表示CPU正在处理相应中断请求,50 /71,8259A内部结构,(4)PR: 优先权判别器 管理和识别各中断源的优先权级别 (5)数据总线缓冲器: 与CPU交换数据 (6)读/写控制电路: 读写控制 (7)级联缓冲比较器: 实现多个8259A级联 (8)控制电路 向CPU发出中断请求,接收CPU的中断响应信号,51 /71,对8259A的编程分两步: 第一步: 在系统加电和复位后,用初始化命令字 对8259A芯片进行初始化编程; 第二步: 在操作阶段,用操作命令字 对8259A进行操作过程编程.,8.8.2 8259A的编程,52 /71,1、初始化命令字及其编程 共有4个初始化命令字ICW1ICW4 (1)ICW1命令字,8.8.2 8259A的编程,*,*,*,1,IC4,SNGL,*,LTIM,D7 D6 D5 D4 D3 D2 D1 D0,1 IR07高电平有效 0 上升沿有效,1 单片方式 0 级联方式,1 还要设置ICW4 0 不设置ICW4,特征位,53 /71,(2)ICW2命令字,T7,T6,T5,T4,T3,0,0,0,D7 D6 D5 D4 D3 D2 D1 D0,中断类型号基址 0中断源IR0对应的中断类型号 (可被8整除的正整数),54 /71,(3)ICW3命令字,主8259A S7 S6 S5 S4 S3 S2 S1 S0,从8259A 0 0 0 0 0 ID2 ID1 ID0,D7 D6 D5 D4 D3 D2 D1 D0,仅用于级联时,从片INT连至主片哪级IR,主片哪个IR与从INT连接,主:S3=1,从:ID20=011,例:,55 /71,(4)ICW4命令字,D7 D6 D5 D4 D3 D2 D1 D0,0 0 0 SFNM BUF M/S AEOI PM,1 8086/8088模式 0 8080/8085模式,1 中断自动结束方式 0 中断正常结束方式,0 * 非缓冲方式 1 0 缓冲方式/从片 1 1 缓冲方式/主片,1 特殊全嵌套方式 0 正常全嵌套方式,ICW1的IC4=1时才需要设置,SP/EN接高:主片 接低:从片,缓 冲 方 式:8259通过总线驱动器与DB相连 非缓冲方式:8259直接与DB相连,56 /71,8259A初始化编程流程图:,ICW1,ICW2,ICW3,ICW4,ICW1_SNGL=1,ICW1_IC4=1,Y,N,N,Y,地址 A0=0 (偶) A0=1 (奇) A0=1 (奇) A0=1 (奇),ICW2ICW4编程地址相同。靠命令字发送次序来区分。,57 /71,初始化编程后8259A: 处于就绪状态 等待中断请求 处于完全嵌套中断方式,2、操作命令字及其编程,要改变8259A的中断方式和中断响应次序,或想从8259A内读出某些寄存器内容,就要向8259A写入操作命令字。,58 /71,(1)8259A的中断方式 8259A的中断方式有5种: 完全嵌套方式 自动循环方式 特殊循环方式 特殊屏蔽方式 查询方式,59 /71,1)完全嵌套方式 8259初始化后处于该方式 IR0优先级最高,IR7最低 开中断情况下,执行中断处理程序期间不能响应本级和低级中断,能响应高级中断,8259A的5种中断方式,60 /71,2)自动循环方式 等优先权方式,优先级是轮流的 特点:某一中断请求被响应后,该中断级自动成为最低中断级,其它中断源优先级别也相应循环改变。 例如:IR3请求的中断结束后,自动变为最低级,而IR4变为最高级,优先级顺序变为: IR4 , IR5,IR6,IR7,IR0,IR1,IR2,IR3,8259A的5种中断方式,高,低,61 /71,3)特殊循环方式 能在主程序或服务程序中通过指定某中断源优先级为最低级,而其它中断源优先级也随之改变。 例如:指定IR4为最低级,则优先级顺序变为: IR5,IR6,IR7,IR0,IR1,IR2,IR3,IR4,8259A的5种中断方式,高,低,62 /71,4)特殊屏蔽方式 除了用OCW1屏蔽掉的中断级和正在服务的中断级外,允许其它任何级别的中断请求 中断 正在服务的中断。 5)查询方式 用查询的方法响应中断请求。,8259A的5种中断方式,63 /71,(2)中断结束(EOI:End of Interrupt) 是指对8259的ISR对应位复位的操作 有两种方法: 1)自动EIO方式 在第二个INTA脉冲的后沿之后,8259自动清除ISR中相应位 2)EIO命令方式 中断服务程序结束之前,CPU向8259发出中断结束命令,64 /71,1) OCW1命令操作字:,设置中断源屏蔽状态,(3)操作命令字 8259A有3种操作命令字: OCW1, OCW2, OCW3.,Mi=1 IRi中断请求被屏蔽,A0=1(奇址),65 /71,OCW2操作命令字: 控制中断结束方式、修改优先权管理方式,R: R=1-中断优先顺序是自动循环方式 R=0-中断优先顺序是固定的 (即IR0最高,IR7最低) SL: SL=1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论