第62章中断控制方法(lyz)(v10)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第6章:中断控制方式主讲老师:廉迎战副教授本章学习目标掌握有关中断的基本概念、中断优先级、中断嵌套、中断屏蔽、中断向量等基本概念。掌握可编程中断控制器8259A的功能、内部结构、工作方式及初始化命令和操作命令定义、使用方法,服务程序的基本编写方法。了解8086/8088中断系统中的中断源分类、IBM-PC机中断系统结构。6.2.1中断概念1、中断:使CPU挂起正在运行的程序而转去执行特殊事件的操作。2、中断源:引起中断的事件3、中断作用:(1)分时处理(2)故障处理(3)实时处理4、中断请求•定义:用某种信号通知CPU指明某台外设正在请求需要中断现行程序的执行。•条件:第一、外设本身的准备工作已完成;第二、系统允许该外设发中断请求。6.2中断处理一个中断的过程,就是妥善处理以下一些基本问题的过程:1)如何识别中断源。2)何时检查中断输入信号及其处理办法。3)如何开放和关闭中断。4)如何识别优先级较高的中断。5)如何保护和恢复中断的现场。6)如何把控制转给中断服务程序。5、中断源类型:IO外围设备(键盘、打印机)实时时钟(时钟)故障(电源断电)中断程序指令和软件故障(INTR、溢出、除0)外中断(硬中断):外设的I/O请求——可屏蔽中断INTR电源掉电/奇偶错——非屏蔽中断NMI内中断(软中断):INT指令/CPU错(除法错、溢出、断点、INTn)6、中断系统应具备功能:实现中断响应中断处理中断返回中断优先级排队中断嵌套中断响应的条件1)设置中断请求允许触发器,发出中断请求信号2)设置中断屏蔽触发器,当此触发器为“1”时,允许外设的中断请求才能被送出至CPU。3)CPU处于开中断状态。4)CPU在一条现行指令结束之后响应中断。6.2.2中断处理过程和中断返回中断过程包括:中断请求、中断排队、中断响应、中断服务和中断返回。1、中断请求:中断源(指令\引脚)向CPU发送的中断信号。2、中断排队:CPU内部据优先级,进行中断排队,确定响应次序。3、中断响应:CPU内部响应中断自动完成关中断保护断点(CS:IP→(SP))保护断点(IF→(SP))形成中断源的中断服务程序人口地址[(中断码*4→CS:IP)采用向量表法]4、中断服务(中断服务程序)中断入口:保护现场(PUSHXX寄存器)开中断(IF=1)中断处理(功能实现)关中断(IF=0)恢复现场(POPXX寄存器)中断返回(IRET)5、中断返回中断返回恢复断点(CS:IP←(SP))恢复断点(IF←(SP))开中断注:中断服务程序的入口地址——中断矢量6.中断响应和处理流程执行指令指令结束?中断请求?取下一条指令NYNYFLAG、CS、IP入栈清除IF、TF转中断服务程序中断服务FLAG、CS、IP出栈返回断点继续开中断IRET中断响应的过程1)发出中断响应信号。2)同时自动关中断,即置中断允许触发器IF为“0”。3)保存断点。4)保护现场。5)输入到中断服务程序逻辑的入口地址。6.中断服务程序框图保护有关寄存器开中断中断处理关中断恢复有关寄存器中断返回图中断服务程序框图中断服务程序入口CPU响应中断后自动关中断保护现场开中断中断服务关中断恢复现场开中断中断返回入口地址:PUSHAX;保护现场PUSHBXPUSHCXPUSHDXPUSHSIPUSHDIPUSHSPPUSHBPSTI;开中断∶;中断服务CLI;关中断POPBP;恢复现场POPSPPOPDIPOPSIPOPDXPOPCXPOPBXPOPAXSTI;开中断IRET;中断返回结尾部分主体部分起始部分返回本节7、中断屏蔽寄存器中断屏蔽触发器:8位。当此触发器在程序控制下,使触发器相应位置“1”时,允许中断(EI);若触发器相应位置“0”时,则关闭中断(DI)。8、开中断和关中断标志寄存器:中断控制位IF(InterruptEnableFlag)。当IF=“1”时,CPU开中断(可屏蔽中断)当IF=“0”时,CPU关中断(可屏蔽中断)9、中断源管理方式中断源管理方式分两种:固定入口地址法中断向量表法8086/8088CPU采用中断向量表法6.2.3中断优先权管理1.中断优先级:当CPU正在处理中断时,能响应更高级别的中断请求,而屏蔽掉同级或较低级别的中断请求。2.中断屏蔽触发器:当此触发器在程序控制下,使触发器相应位置“1”时,允许中断(EI);若触发器输出端置“0”时,则关闭中断(DI)。3、中断优先权管理方法:软件法、硬件法1.软件优先权管理利用软件优先次序确定中断源的优先次序。方法:所有中断源请求信号“或”送CPU申请中断查询流程确定中断的优先级特点:简单、易实现、时间长。2.硬件优先权管理利用硬件(中断优先权编码电路、链式优先权排队电路等)确定中断源优先次序方法:中断优先权编码电路组成:硬件编码电路和比较器组成中断源申请均送CPU的引脚编码器送出优先权的最高编码,据此获得相应的中断服务程序入口地址CPU响应中断过程中,比较器判断高级别的中断请求才被响应。链式优先权排队电路组成:硬件逻辑电路代替查询过程各中断源通过一个特定的信号串行连接形成链,无中断请求,该信号可串行通过各中断源。当链中某一个中断源请求,该信号在相关的链上被CPU响应。链式电路优先次序决定中断源的次序。CTC、PIO、SIO、8259特点:硬件复杂、速度快。4.中断优先排队与中断源的识别(1)程序查询识别(软件查询法)(2)硬件串行顺序链识别(硬件查询法)(3)中断向量法识别(4)单级中断处理和多级中断处理(1)、程序查询识别中断方法YYYNNN保护现场检查IRQ1的中断状态是否为“1”检查IRQ2的中断状态是否为“1”检查IRQ3的中断状态是否为“1”IRQ1的服务程序IRQ2的服务程序IRQ3的服务程序恢复现场中断返回中断处理入口I/ODATABUS中断请求IRQSYNPOL1号设备接口2号设备接口n号设备接口CPU(2)、硬件串行顺序链识别中断方法(3)、中断向量编码示意图INTR1INTA1INTM1INTR2INTA2INTM2INTRnINTAnINTMn中断优先权编码电路设备接口1IRIM设备接口2IRIM设备接口nIRIMINTRINTA向量地址主机同时中断请求的处理方法(a)单级中断处理(b)多级中断处理B处理A处理B处理C处理(a)CPUB处理CPUA处理CPUC处理CPU(b)CPUCPUCPUB请求A、C请求(4).单级中断处理和多级中断处理:单级中断处理不允许其他设备再中断CPU的程序;多级中断处理允许优先级高的中断打断优先级低的中断服务程序。(3)多级中断结构(4)单级中断结构IRQ1IRQ2IRQ3:IRQnCPUIRQ1IRQ2IRQ3:IRQnCPUINT+6.2.4.18086中断能力8086微处理器有处理256种中断的能力。采用向量中断法每个中断源分配给一个中断类型码,在0~255之间,用一字节表示,也称为256种类型中断。256种类型中断分为硬件中断和软件中断。硬件中断:NMI和INTR。软件中断:异常事件或执行中断指令INTn。6.2.48086/8088中断系统软件中断(内部)硬件中断(外部)INTn指令中断逻辑断点中断溢出中断单步中断除数为0中断(3)(4)(1)(0)非屏蔽中断请求(2)中断控制器8259A可屏蔽中断请求NMIINTR8086中断源分配图INTOINT3OF=1TF=16.2.4.28086中断分类1.硬件中断(外部中断)外部电路产生的中断称为硬件中断,又分为非屏蔽中断和可屏蔽中断两大类。可屏蔽中断经CPU的INTR引脚输入,若IF=1,CPU开放中断,可以响应中断请求。若IF=0,CPU不响应中断,即屏蔽中断。非屏蔽中断经CPU的NMI引脚输入,不受IF的限制,只要NMI有请求,CPU一定响应,故称为非屏蔽中断。2.软件中断(内部中断)处理器执行一条INTn指令的中断。n为中断类型码,可指向任何一种中断类型。当执行一条INTn指令后,程序就自动转向n类型中断的处理程序中去。分类:除法0、单步1、断点3、溢出4、软件6.2.4.38086中断优先级和中断类型码1.中断优先级响应次序为:1)除法错误、溢出、INTn2)NMI非屏蔽中断3)INTR可屏蔽中断(判定IF=1YES响应)4)单步中断2.中断类型码1)除法错误、溢出、单步、断点、NMI中断专用中断由硬件产生2)INTn软件中断包含在指令中3)外部可屏蔽中断INTR由硬件电路向CPU提供中断类型码(00H---0XFFH)6.2.4.4中断向量与中断向量表1、中断向量:每种中断处理程序的入口地址称为中断向量。2、中断向量表:8086将内存最低地址的1K单元作为中断向量表,每个中断向量对应一个中断类型码,存放256种中断处理程序的入口地址,每个地址占4字节(段地址:偏移地址)。中断向量表的分配如下图所示:03FFH03FCHType225CSIP:0083HCSType32IP0080H007FHCSType31IP007CH:CSType5IP0014H0013HCSType4IPCSType3IPIPIPIPCSCSCS0010H000FH000CH000FH0008H0007H0004H0003H0000HType2Type1Type0:224保留27个用户定义个8086专用5个溢出中断断点中断非屏蔽中断单步中断除数为0地址由低变高中断操作的5个步骤:(1)取中断类型号(2)计算中断向量地址(3)取中断向量,偏移地址送IP,段地址送CS(4)转入中断处理程序(5)中断返回到INT指令的下一条指令例:BIOS中断INT4AH4AH4=128H4AH4+2=12AH(128H)IP(12AH)CS类型49H的中断向量05H18H00HF0H类型4BH的中断向量0000、01240000、01250000、01260000、01270000、01280000、01290000、012A0000、012B0000、012C0000、012D0000、012E0000、012FSTIPUSHDSIRETF000、18051805HF000HIPCS中断处理程序INT4AHMOVCX、30向量地址=4AH*4=128H(1)(2)(3)(4)(5)3、设置中断向量表:步骤:编制中断服务程序、安排存储空间中断服务程序的入口地址注入中断向量表。A、设置8086中断向量方法:例:中断服务程序的入口地址INTSUB,中断码为40H。VECTABSEGMENTAT0000ORG0100HADDRPDW2DUP(?)VECTABENDSCODESEGMENT------CLIPUSHDSMOVAX,VECTABMOVDS,AXMOVADDRP,OFFSETINTSUBMOVADDRP+2,SEGINTSUBPOPDSSTI------CODEENDS4、8086/8088对中断源的采样有几条指令是在紧跟其后的一条指令也被执行完才去采样:1)对段寄存器的装入指令2)STI和IRET指令3)WAIT指令4)HLT指令6.2.4.5、8086中断程序的编写步骤:主程序:(1)设置中断向量(INTTAB=CS:IP)(2)设置8086CPU中断允许位FLAGS中的IF位=1允许中断(STI开中断)=0禁止中断(CLI关中断)(3)编写系统主程序8086中断处理子程序:(1)保存工作寄存器(PUSH)(2)开中断(STI)(3)中断处理程序(4)关中断(CLI)(5)恢复工作寄存器(POP)(6)中断返回(IRET)例:利用中断方式读取60H端口内容,并且在61H端口输出。中断类型号为0FH。解:中断类型号:0FH程序过程:主程序:1、CLI2、设置中断向量3、STI4、主程序内容5、中断服务程序:解:程序:VECTABSEGMENTAT0000ORG00F0HADDRPDW2DUP(?)VECTABENDS

1 / 93
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功