第7章中断系统.ppt
《第7章中断系统.ppt》由会员分享,可在线阅读,更多相关《第7章中断系统.ppt(133页珍藏版)》请在三一办公上搜索。
1、,第8章 中断系统,本章主要内容中断的基本概念8086/8088的中断系统中断控制器8259A,中断的基本概念,本节主要内容中断及中断源中断处理过程中断优先权管理,中断的意义,中断是CPU和外部设备交换数据的一种方式;是一种使CPU挂起正在执行的程序而转去处理特殊事件的操作 当外围设备准备好向CPU传送的数据或者外设已准备就绪接收CPU的数据,就向CPU发中断请求,或者计算机系统有异常事故要求CPU处理 这时,CPU暂停原程序的执行,启动中断服务程序,转去中断处理,处理完毕后,又返回原来的断点,继续执行原来的程序,中断的概念图示,轮询方式中断方式:,与调用子程序的区别,由CALL指令引起CPU
2、能确切知道何时调用只需将CALL指令的下一条指令的地址压入栈保存需要传递的参数预先可知用RET指令返回,由外设提出CPU无法能确知何时中断要完成中断周期内确定的各种操作后,才能去响应运行服务程序所需要的参数预先不知用IRET指令返回,中断源,能够导致CPU产生中断的来源就是中断源;或者称中断源就是能够引起中断的事件 对于CPU来说,中断源有两类:硬中断源和软中断源硬中断也称为外中断,是由外部的电路在CPU的引脚上产生的中断请求 软中断是在CPU执行程序过程中产生的中断请求;可以是一条软中断指令,也可以是因为程序运行出现某种问题而导致的软中断,CPU中断源的示意图,开中断与关中断,外中断源又可以
3、分为条件中断(也称为可屏蔽中断)和无条件中断(也称为不可屏蔽中断)对于条件中断,要求CPU必须处于某种条件下,才可以响应中断。如果CPU处于可以响应条件中断的状态,称为开中断状态。如果CPU处于不可以响应条件中断的状态,称为关中断状态,关中断方法:IF=0 使用CLI指令开中断方法:IF=1 使用STI指令,几个基本概念,中断源:引起中断的事件断点:主程序被打断的位置中断服务程序:中断源的响应和处理函数,中断系统的基本功能,管理和处理中断事务的系统称为中断系统 接受中断请求 实现中断、启动中断服务程序及中断返回 确定中断的优先级别,对多个中断进行排队管理 实现中断优先处理,即实现优先权高的中断
4、,可以中断优先权低的中断,中断处理过程,中断处理过程一般包括中断请求中断排队中断响应中断服务中断返回,中断请求,中断请求信号:当中断源需要CPU为其服务时,中断源将发出的“中断请求”信号请求中断的条件:该外设本身的准备工作已完成系统允许该外设发出中断请求中断请求屏蔽:并不是所有的中断请求都可提交 中断屏蔽触发器输出端置“1”时,允许该中断(EI)输出端置“0”时,则屏蔽该中断(DI),中断排队,中断排队就是按照一定的策略,在多个当前中断请求中,确定其中的一个中断源中断排队的基本原则是:先响应高优先级中断同级别的先来先服务 单级中断处理和多级中断处理:单级中断处理不允许其他设备再中断服务程序;多
5、级中断处理允许优先级高的中断中断优先级低的中断服务程序,单级中断处理和多级中断处理示意,为单级中断处理示意图 为多级中断处理示意图,中断响应,CPU给设备发出一个中断应答信号,进入中断响应周期中断响应的工作任务:关中断(不允许接收新的中断请求)保存断点 保护现场(保存某些寄存器的值到堆栈)形成中断服务程序的入口地址(将指令指针指向中断服务程序的入口),程序转向中断服务程序,中断服务与中断返回,中断服务是指CPU需要执行的中断服务程序中断返回是指该运行结束后应返回原来的程序中断服务程序由程序员根据中断源的操作事先编制并存储,相关寄存器压栈保护将在该服务程序中使用的寄存器中的原内容,中断服务程序的
6、结构图,IF=1表示在该服务程序运行过程中,该可以被中断而运行更高级别的其他中断服务程序,IF=0恢复现场时,不允许再响应中断,以保证恢复的有序和正确,使用中断返回指令,结束中断服务,返回中断前的原程序,更详细的程序框架,入口地址:PUSH AX;保护现场PUSH BXPUSH CXPUSH DXPUSH SIPUSH DIPUSH SPPUSH BPSTI;开中断标号;具体的中 断服务,CLI;关中断POP BP;恢复现场POP SPPOP DIPOP SIPOP DXPOP CXPOP BXPOP AXSTI;开中断IRET;中断返回,中断优先级,在实际系统中一般有多个中断源,有时会出现有
7、多个中断同时请求中断的情况,而CPU每次只能响应一个中断为了能够有序的处理多个中断申请,所以要有中断优先级的规定如果CPU在执行中断服务程序时,又接受了新的中断申请,就会打断正在执行的中断服务程序,为新的中断源服务。这种在中断服务过程中,又接受新的中断申请并为之服务的情况,称为中断嵌套。有了中断优先级可以使得中断嵌套有序的进行,中断优先权管理,中断优先权管理就是判别和确定各个中断源的中断优先权,决定首先响应哪个中断请求实现中断优先权的判别,一般有软件和硬件两种方法,软件方式确定中断优先权,软件法是在CPU接受多个中断请求后,用软件查询的方法,确定哪个中断源首先被查询到;先被查询的先响应;中断被
8、查询的次序就是优先权的高低次序;该次序需要程序员在编写中断服务程序时,通过查询来确定,软件查询确定中断级别的接口示意,假设有8个外设中断源;存放在I/O端口中;已经约定A外设的级别最高,H的最低;他们的状态或1或0(1为有请求)只要有请求,即可通过或门向CPU请求 此时,CPU将通过查询,决定先响应哪一个中断请求,软件查询中断的程序 IN AL,80H;端口80H的内容送AL TEST AL 80H;测试AL的最高位 JNZ ASEV;对A的服务程序标号 TEST AL,40H JNZ BSEV;对B的服务程序标号 TEST AL 01H JNZ HESV;对H的服务程序标号,软件方式确定中断
9、优先权,已设置A的级别最高从A到H依次查询先查询到的先响应,软件查询流程图,硬件方式确定中断优先权,用硬件方式实现中断优先权的判别常用的硬件电路有:中断优先权编码、链式优先权排队电路及专用硬件电路等广泛使用8259A控制器,硬件方式确定中断优先权的例,高优先级中断的三态缓冲器连接到数据总线。,小结,中断的概念中断源、断点、中断服务程序中断处理的一般流程中断请求-中断优先级判别-中断响应-断点现场保护-中断处理程序-断点现场恢复-中断返回中断优先级优先级判别方法、中断屏蔽、中断嵌套,8086/8088的中断系统,本节主要内容8086/8088的中断指令8086/8088的中断分类中断向量表808
10、6/8088的中断处理过程,8086/8088的中断指令,8086/8088提供了3条中断操作指令1.中断指令 INT n2.溢出中断指令 INTO3.中断返回指令 IRET,中断类型码一共256个;取值为0-255,或00H-0FFH;一个唯一的中断类型码标记一种中断服务程序,INTO指令检查溢出标志OF,如果OF=1,则启动一个中断号为4的中断过程,如果OF=0,不做任何操作。INTO指令一般安排在有符号数算术运算指令后面,用于进行溢出检查。IMUL DX;乘法指令INTO;若发生溢出,则启动INT 4中断服务处理 MOV RESULT,AXMOV RESULT+2,DX,结束服务程序返回
11、原程序,CLI:关闭中断(将标志寄存器FLAGS的IF位置0);STI:开启中断(将标志寄存器FLAGS的IF位置1);其中,CLI、STI以及IRET可用于硬件中断控制,INT n、INTO为8086/8088的软件中断调用指令。,8086/8088的中断指令,SP,IP,CS,FLAG,中断返回后,中断指令的执行过程中涉及的堆栈操作,IPL,IPH,CSL,CSH,FLAGL,FLAGH,IPL,IPH,CSL,CSH,FLAGL,FLAGH,SP,SP,SP,8086/8088的中断分类,8086/8088的中断系统可以处理256种不同的中断8086/8088中断源可分为:软中断(也称内
12、部中断)硬中断(也称外部中断)可屏蔽中断(即条件中断)不可屏蔽中断(即无条件中断),8086/8088的内部中断,内部中断也称为软中断 它是由CPU执行某些指令或CPU执行程序中某些错误引起的中断 除单步中断外,其他的内部中断都是非屏蔽中断,8086/8088的内部中断,除法错中断-类型码为0CPU在执行除法指令DIV或IDIV时,若发现除数为0或商超过了寄存器所能表达的范围,就立即产生了一个类型为0的内部中断CPU不需要执行任何指令,直接地自动地响应该中断,转去执行“除法错误中断服务处理程序”,8086/8088的内部中断,单步中断类型码为1单步中断与类型0中断相似,没有对应的中断指令 它是
13、由CPU对状态标志寄存器中的单步标志TF的测试而产生的当CPU测试到TF1,自动产生单步中断;此时,每执行一条指令,就会产生一个中断 中断服务程序的功能一般是显示此时的运算结果及了解系统的信息提示,8086/8088的内部中断,断点中断类型码为3执行 INT(3)指令就会产生一个类型为3的内部中断,也称为断点中断 它和单步中断类似,断点中断也是80868088提供给用户的一个调试手段,一般用在调试程序中断点中断与单步中断不同在于:单步中断每执行一条指令中断一次;断点中断是程序运行到预先设置的断点处,中断一次;设置断点就是在此处加一个INT指令,8086/8088的内部中断,溢出中断类型码为4
14、溢出中断是由CPU执行一条INTO指令实现的,当OF1时,执行 INTO 就会进入类型码为4的内部中断;其中断服务程序一定是处理溢出错误,内部中断,8086/8088的内部中断,软件中断-类型码为n当执行INT n 指令时,形成软件中断,中断类型码由指令提供 该指令可设置在程序的任何地方,从执行功能上来说,它与段间调用子程序类似,使用更加方便。用户只要知道中断号,不用知道具体的中断程序地址。它将状态标志寄存器与断点一起推入堆栈,并从中断向量表中取出中断服务程序(相当于子程序)的入口地址,内部中断问题,内部中断与CPU 正在运行的程序是同步的;有些还是程序的组成部分故有人称他们为“程序运行异常”
15、,而不把他们以“中断”对待外部中断是“异步”的,事先一般不可知;而且由外设提出请求,8086/8088的外部中断,外部中断通过外部的硬件设备产生 由送至CPU引脚NMI和INTR上的请求信号引起中断 外部中断分为非屏蔽中断和可屏蔽中断,非屏蔽中断(NMI)非屏蔽中断请求由NMI引脚送入,它不能被屏蔽,即不受标志IF状态的影响,在当前指令执行完后,CPU就必须响应 非屏蔽中断类型码固定为2,外部中断,非屏蔽中断有以下几个特点:不受内部中断允许触发器及状态标志IF的影响外部通过非屏蔽中断引脚NMI提出请求非屏蔽中断主要用于处理系统的意外和故障上升沿触发(边沿触发),外部中断,可屏蔽中断 可屏蔽中断
16、请求由INTR引脚送入,CPU是否响应,取决于标志寄存器中的中断允许标志lF的状态 电平触发;必须“长时间”保持,直至CPU响应若IF0,表示中断禁止,CPU不响应;若IF1,表示中断允许,CPU可以响应 进入中断响应总线周期,CPU发出中断响应信号INTA,并从数据总线获取中断源的中断类型码,选择并进入中断服务程序,外部中断,可屏蔽中断INTR请求,有两个控制条件决定是否响应 第一条:中断请求是否被屏蔽,对应于8259A中断屏蔽触发器 IMR的输出状态;若为0,则允许中断;若为1,则屏蔽中断第二条:CPU是否允许中断,即标志寄存器中位IF是否等于1,外部中断,8086/8088中断优先级,中
17、断向量的意义中断服务处理程序的入口地址(首地址);它包含段地址和偏移地址两个部分中断向量占用4个字节;低地址存放中断处理程序的入口偏移地址,高地址存放其段地址,中断向量表,中断向量表的意义8086/8088微处理器规定:从物理地址00000H开始,依次安排存放各个中断向量,形成一个特殊的存储区域,称为中断向量表;在表中,各中断向量的存放顺序按中断类型码排列,并约定从0开始256个不同类型的中断向量将占用1KB区域;中断向量表建立在内存空间中最低1K地址,地址从00000003FFH,中断向量表,中断向量表,中断向量在中断向量表中的存放地址称为中断向量地址指针中断向量指针由CPU采用将“中断类型
18、码乘于4”的方式确定并管理 CPU将依据该指针从中断向量表中取出两个字分别送入IP和CS中断类型码联系着中断向量和中断向量地址指针,中断向量表,例如:对于中断类型码为24H的中断源其中断向量地址指针为 24H 40090H 即在0000:0090H开始的单元依次存放该中断源的中断服务程序的人口地址若00090H00093H中的内容分别是00H、46H、A4H、3BH,则该中断源的中断服务程序入口地址为 3BA4H:4600H,中断向量表,同样:若中断类型码42H的中断向量为 5678H:1234H则中断向量表中从00108H0010BH这4个单元内应依次存放34H、12H、78H、56H,中断
19、类型码的意义,CPU根据中断类型码,确定向量指针,到中断向量表中取出中断服务程序的入口地址,实现程序执行顺序的跳转不同的处理器,对于类型码的分配是不同的,IBM PCXT机的中断类型号的安排,IBM PCXT机的中断类型号的安排,编制好中断服务程序后,给中断服务程序安排了存储空间,还须将它的入口地址按照中断类型码的顺序,置入中断向量表中;称为中断向量表的设置当中断到来时,CPU才会根据中断类型码,自动取出中断向量,转入中断服务程序中系统提供的服务程序的设置由系统自动完成;用户自定义的服务程序的中断向量应由用户用程序写入,中断向量表的设置,中断向量表的两中设置方法,向中断向量表置入中断向量的方法
20、用传送指令实现用DOS的系统功能调用,INT 2lH实现,例:假设某中断服务程序的入口地址为INTSUB,中断类型码为40H;试用传送指令设置中断向量表,中断向量表的设置,VECTAB SEGMENT AT 0000;设置连接方式 ORG 0100H;对应类型码40H ADDRP DW 2 DUP(?)VECTAB ENDS CODE SEGMENT CLI;关中断 PUSH DS;保护现场 MOV AX,VECTAB MOV DS,AX;指定段基址为 0000 MOV ADDRP,OFFSET INTSUB;存放中断向量 MOV ADDRP+2,SEG INTSUB POP DS;恢复现场
21、STI;开中断 CODE ENDS,假设中断号为40的中断服务程序地址为0835H,编写程序将该中断向量写入到中断向量表中。40号中断的中断向量表地址为 4*40=00A0H,因此 00A0H存放0835H,00A2存放0000H。【书上P180有误】MOV BX,0A0H MOV AX,0835H MOV ES:BX,AXMOV AX,00H MOV ES:BX+2,AX,中断向量表的设置,25H功能调用方法,设置中断向量表执行调用前需预置参数 1)AH中预置功能号25H;2)AL中预置中断类型码;3)DS和DX中预置中断服务程序的入口地址(段地址和偏移地址分别置入DS和DX)预置完以上参数
22、后,执行INT 21H指令就可把中断服务程序的入口地址置入中断向量表中适当的位置,中断向量表的设置,例8-4 设中断服务程序的入口地址为INTSUB,中断类型码为70H,则用下列指令段可设置中断向量,中断向量表的设置,PUSH DS MOV AX,SEG INTSUB MOV DS,AX LEA DX,INTSUB MOV AL,70H MOV AH,25H INT 21H POP DS,35H功能调用,读取中断向量表执行调用前需预置参数 1)AH中预置功能号35H;2)AL中预置中断类型码;执行INT 21H后:ES:读出的中断服务程序入口的段地址;BX:读出的中断服务程序入口的偏移地址,读
23、取中断向量表,8086/8088的中断响应流程,按优先级查询中断源,获取中断类型号,中断响应,一个INTR中断请求被响应时,CPU实际执行的总线时序全过程如下:1)执行两个中断响应总线周期;被响应的中断源将在第二个中断响应总线周期中,由低8位数据线送回一个单字节的中断类型码。CPU接收后,左移两位(4),作为中断向量的首字节地址,存入CPU内部暂存器,中断响应过程,2)执行一个总线写周期,把状态标志寄存器FR推入堆栈 3)把FR中的中断允许标志IF和单步标志TF置0,禁止中断响应过程中,其他可屏蔽中断的进入;同时禁止中断处理过程中单步中断 4)执行一个总线写周期,把CS的内容推入堆栈 5)执行
24、一个总线写周期,把IP的内容推入堆栈,中断响应过程,6)执行一个总线读周期,把中断向量前两个字节读入,送到IP 7)执行一个总线读周期,把中断向量后两个字节读入,送到CS对非屏蔽中断或内部中断,则由第2步开始执行,因为此时中断类型码已确定无需从数据线上读取,中断响应过程,中断响应时序,小结,8086/8088中断指令8086/8088中断分类:内部中断、外部中断,不同类型中断的响应时序8086/8088的中断向量表:中断向量、中断向量表、中断向量指针、中断类型码、中断向量表的设置8086/8088的中断处理流程,主要内容:8259A的主要功能 8259A的结构及引脚功能 8259A的工作过程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中断 系统
链接地址:https://www.31ppt.com/p-4827071.html