版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2022/12/2316.3中断技术版权所有,2000(c)南京航空航天大学提示本节是微型计算机及接口技术课程的一个重点和难点。
2022/12/232
6.3中断技术基本概念
中断(中断源、中断分类、中断特点)中断过程(请求、判优、响应、处理、返回)中断优先权(软件排优、链形电路、专用中断)80X86(PentiumⅣ)中断系统80X86中断结构80X86中断向量(中断类型码、中断向量表)80X86中断过程及应用(内部中断、NMI、INTR) 保护方式下的中断过程*可编程中断控制器8259A*
8259A内部结构及引脚功能 8259A工作原理及工作方式 8259A的编程及应用、高级中断控制器*为选讲部分2022/12/233一、基本概念中断(概念、中断源、中断分类、中断特点)中断过程(请求、判优、响应、处理、返回)中断优先权(软件排优、链形电路、专用中断)2022/12/2341、中断(中断源)的概念(1)所谓中断,是指处理器在执行正常程序过程中,当出现某些异常情况或某个外部设备请求时,处理器暂时中止正在执行的程序,转而去执行其特定的服务程序,并在执行完服务程序后返回原来被中止的程序处继续执行的过程。中断申请主程序
中断服务子程序中断返回2022/12/235(2)中断源——产生中断的原因(由软、硬件产生)输入/输出设备:键盘、显示器、打印机数据通道:磁带、磁盘等电源故障实时控制中的各种参数中断指令INTn等1、中断(中断源)的概念2022/12/236(3)中断的分类内中断:由CPU执行软中断指令INTn或异常而产生的中断。外中断:外部中断源向CPU提出请求而产生的中断(如INTR、NMI引脚上出现的中断源)。2022/12/237
“同步”操作CPU和多台I/O外设同时工作,需要时服务一下。实时处理CPU可根据外部事件的情况,决定响应中断服务的顺序。中断嵌套中断嵌套,使得CPU即使在外理某一中断源时,也可响应更重要的中断源的申请。中断方式与程序控制方式最大的不同是外设具有申请使用CPU的主动权。
图示图示(4)中断的特点2022/12/238
2、中断处理过程
中断请求 中断判优 中断响应 中断处理 中断返回1)
中断请求:由中断源提出中断申请这是引起中断的第一步(必要条件)中断源产生中断的条件,随中断源不同而不同如软件中断(除法出错中断,条件是除数为0或商过大)硬件中断又分为可屏蔽和非屏蔽中断,必须要使INTR或NMI信号有效。包括
五个基本过程2022/12/239
2)中断判优:决定是否立即响应中断申请由于中断产生的随机性,在出现多个中断源同时申请中断处理时,就必须根据设计者要求的轻重缓急来确定响应哪个中断源的申请(中断优先权)。在已进行中断处理的情况下,可决定是否进行中断嵌套。在新中断源优先权更高时,就产生中断嵌套,否则等原中断源处理完毕后,再响应新的中断(非嵌套)。CPU在处理中断时,又有优先权更高的中断请求,则CPU暂停现在的中断程序,转去处理新的中断程序,处理完毕后,返回原中断处继续执行的现象。
中断优先权:根据中断源的轻重缓急,给每个中断源确定一个中断级别。2022/12/2310
3)中断响应:CPU根据外设提供的中断向量(中断服务程序的入口地址)转至服务程序入口地址。
CPU在执行完每一条指令后,查询是否有中断申请,如果有中断申请,且CPU的中断允许是开放的,则CPU硬件自动完成下列工作:①
保留断点把CPU响应中断时的IP和CS的内容称为断点,即程序在此被中断,并把断点压入椎栈(80X86还把FR内容压入椎栈)。断点:下一条指令的起始地址。2022/12/2311
②关中断
CPU响应中断后,就自动实现关中断。(要实现中断嵌套,必须在进入服务程序后用指令开中断。)
③形成中断程序的入口地址
CPU根据中断源提供的中断向量形成中断入口地址(即中断服务程序的首地址),分别送入IP和CS(其形成方法在下一节中介绍)。2022/12/2312
这里,提醒大家注意二点:
1、
CPU复位时,中断允许是关闭的,即为’IF=0’。
因此,要使用中断,必须用指令来开中断(如 80X86的STI和CLI指令)。
2、只有中断申请,还不一定能实现中断过程。除了外设的优先权高低条件外,在CPU内部 还有中断允许触发器(80X86的IF标志),只有其 为’1’时,才能响应中断。否则,既使有中断 请求信号,CPU也不予响应(必要条件)。2022/12/2313
4)
中断处理:
完成对中断源的处理任务
在中断处理时,首先要进行现场保护,(即把有关寄存器的内容压入堆栈),然后再进行中断处理,这是中断的核心部分。在中断处理结束后,再用POP指令恢复有关寄存器的状态。2022/12/2314
5)中断返回 通常在执行中断返回指令IRET前,要求用指令 开中断,以便CPU再次响应中断,然后再执行 IRET指令。对80X86CPU来说,由于IRET不仅具有弹出断点 送IP和CS的功能,还具有恢复FR内容的功能。
这一功能实际上起到了开中断的作用。思考:80X86CPU在执行IRET指令后,IF的状态?2022/12/2315
3、中断优先权 在系统中如果有多个中断源时,就要考虑其中断级 别,即中断优先权的问题。通常CPU引脚只有一条 中断请求线,这就提出了当有多个中断源同时请求 时,CPU应响应哪个中断源的问题。 另外,CPU如正在处理中断时,也要求能响应更高 级的中断申请,并屏蔽同级或较低的中断申请。
中断优先权的一般处理原则:
1)不同级别中断发生,按级别高低处理;
2)高级中断可以打断低级中断的处理程序;
3)低级中断不能打断高级中断的处理程序;
2)同级中断不能相互打断中断处理程序。
目前大都采用软件和硬件的方法来确定中断优先权2022/12/2316
1)软件查询法利用软件查询技术来确定中断优先权的方法。 软件查询法确定优先级的方法: 先查询的中断源优先级最高, 最后查询的级别最低。 软件查询法的实现可用屏蔽法 (一位一位测试)或移位法(左、右 移位到CF中测试)。
如图2022/12/2317
软件查询法的优缺点:优点:
①硬件电路简单②无需优先权的硬件排队电路③可随时修改优先级缺点:
软件查询,影响中断响应的实时性。2022/12/2318
2)硬件优先权排队电路利用硬件优先权排队电路可大大提高CPU中断处理的速度。常用的方法有两种:简单硬件方法----菊花链法(链形优先权排队电路)①
其接口原理图②
工作原理:当I/O接口有中断请求时,如CPU是开中断的,就会发出INTA信号,如果没有级别高的外设中断请求,那么中断逻辑电路会允许INTA信号原封不动地往后传递,一直到发出中断请求的接口;同时,本级的中断请求信号通过中断逻辑电路实行阻塞,使INTA信号不再传到后面的接口,当某一接口收到中断响应信号后,才撤消中断请求信号并转入中断服务子程序。点击看图2022/12/2319
当多个外设同时发出中断请求时,按上述原理,显然最接近CPU的接口先得到中断响应,而排在菊花链中较后位置的接口则收不到到中断响应信号,从而一直保持中断请求。此后,CPU进入某个中断处理子程序的执行,如果在子程序
中用开中断指令又一次使CPU开中断(IF=‘1’),则CPU就会响应高级别的中断请求,又发出中断响应信号,直到这时,第二个请求服务的接口才能撤消中断请求。2022/12/2320
当CPU响应某个级别较低的中断请求进行中断处理时,如果又有级别较高的外设提出中断请求,由于菊花链电路中级别低的外设不能屏蔽级别高的外设的中断请求,故优先权级别高的外设的中断请求可传递到CPU。此时,如果CPU是开放的,CPU就立即响应该中断,暂停当前优先权级别较低的外设的中断服务,转入为高级别中断外设服务,这就是中断嵌套。可知,菊花链电路控制优先权的办法是:各外设在链中的位置决定了优先权的级别,越靠近CPU的接口,其优先权级别越高。2022/12/2321
专用硬件方式------可编程的中断控制器采用可编程中断控制器是当前微型计算机系统中解决中断优先权管理的常用办法,其电路框图见图。通常,中断控制器包括:中断优先权编码电路、中断请求锁存器、中断类型寄存器、当前中断服务寄存器以及中断屏蔽寄存器。2022/12/2322
引用了中断控制器,CPU的中断响应信号INTA和中断请求信号就不再直接连到接口上,而是和中断控制器连接。同时,外设的I/O接口送来的中断请求信号也都并行地送到中断控制器的输入端,这些信号经中断控制器内部的优先权编码电路分配各自的优先级顺序,如IR0、IR1……IR7等等。在80X86系统中,中断控制器的型号为8259A。2022/12/2323二、80X86(PentiumⅣ)中断系统
1、80X86的中断结构不可屏蔽中断(NMI)可屏蔽中断(INTR)中断分类图外部中断:内部中断:
专用中断
指令中断(INTN)2022/12/2324不可屏蔽中断NMI含义:不能用软件来控制是否允许中断的一种外部中断。常见NMI中断有:
(1)电源掉电;
(2)存储器检验出错;
(3)总线奇偶错等。2022/12/2325可屏蔽中断INTR含义:可用软件控制是否允许中断的外部中断。即STI使IF=1,允许中断;CLI使IF=0,禁止中断。常见INTR中断有:
所有外部设备中断如键盘、鼠标、打印机、显示器、声卡、CD-ROM等。2022/12/23268086的内部中断专用中断指令中断在80X86系统中,通过执行中断指令或由CPU本身启动的中断称为内部中断。2022/12/23272、80X86中断向量术语及概念实方式下中断服务程序入口地址保护方式下中断服务程序入口地址*保护方式与实方式中断主要区别*2022/12/2328(1)术语及概念中断类型码(中断类型号)中断向量中断向量表中断描述符*中断描述符表*2022/12/2329中断类型码(中断类型号)中断类型码:中断源的唯一编号数量:256个编号:0~255适用范围:8086~PentiumIV(各种工作方式)2022/12/2330中断向量含义:
中断服务程序的入口地址(CS:IP)组成及格式:
共4个字节,段地址及偏移地址。2022/12/2331中断向量表含义:
存放256个中断向量的内存区域。即存放中断服务程序入口地址的内存区域称为中断向量表。中断向量表大小:1KB(256*4)中断向量表地址范围:00000H~003FFH适用范围:实地址方式2022/12/2332中断向量地址指针=中断类型码×
4中断类型码n与其对应的中断向量存放起始地址之间的关系是:
起始地址=4×n;末地址=4×n+3
即中断类型号n与其对应的中断向量存放在4×n~4×n+3指示的内存单元中。(2)实方式下中断服务程序入口地址2022/12/2333
实地址方式下的中断服务程序入口地址求法【例1】假设在实地址方式下,内存单元00140H到00147H中存放的内容如图所示,求51H号中断的中断服务程序入口地址。
2022/12/2334例1求解(1)求中断向量存放的首地址和末地址
由N=51H可知中断向量存放的首地址=51H×4=144H(左移两位方法)
末地址=51H×4+3=147H(2)从首、末地址对应的4个单元找出中断向量
00144H~00147H中内容就是51H号中断源的中断向量,对照中断向量组成及格式可知:
段地址=4540H,偏移地址=3430H,所以,中断服务程序入口地址的逻辑地址为4540:3430H物理地址为:
段地址×16+偏移地址=45400H+3430H=48830H2022/12/2335【例3】已知20H~23H单元存放中断向量12H、34H、56H、78H,求该向量所对应的中断类型码。【例2】已知中断向量为1234:5678H,中断类型码为17H,问该中断向量应如何存入中断向量表中?解:4×17H~4×17H+3=5CH~5FH四个单元,依次存放78H、56H、34H、12H。解:因为N×4=表地址20H所以N=20H/4(右移2位)=08H(中断类型码)
2022/12/2336中断向量组成及格式2022/12/2337中断描述符*含义:
描述某中断对应中断服务程序的入口地址信息及其属性,
包括偏移地址和对应段的选择子。组成及格式:8个字节2022/12/2338中断描述符表*含义:
存放256个中断描述符的内存区域。中断描述符表容量:2KB。适用范围:保护地址和V86方式。2022/12/2339(3)保护方式下中断服务程序入口地址*(1)通过中断类型号n从中断描述符表IDT中找出中断描述符。 中断描述符首地址=中断类型号码n×8+IDT基地从该地址开始取出8字节内容就是中断描述符。(2)通过中断描述符中的选择子从GDT或LDT中找出或求出段描述符。(3)据段描述符提供的段基地址与中断描述符提供的偏移地址合成物理地址。示例2022/12/2340保护方式下的中断服务程序入口地址求法(例子)【例4】已知保护方式下,内存单元中有关单元存放的内容如右图所示,IDT的首地址为00280000H,GDT首地址为00500000H,求20H号中断服务程序入口地址。解:2022/12/2341例4求解(1)求偏移地址先找中断描述符,然后从中找出中断服务程序偏移地址由n=20H知,中断描述符存放在00280000H+20H×8=00280100H开始
的8个单元,所以中断描述符为:0042
EE000013
2012H(2)求中断服务程序所在段的段基地址
段选择子为:0013H=0000000000010011B
TI=0,段描述符在GDT中,RPL=11为普通用户程序请求,
索引值=0000000000010B所以中断描述符所在段描述符在GDT中的位置为:索引值×8+GDT首地址=0000000000010000B+00500000H=00500010H因此,段描述符为:3918
40
423400
0096
H
段基地址=39423400H(3)合成物理地址服务程序入口地址=对应段的段基地址+偏移地址=39423400H+00422012H=39845412H2022/12/2342(3)保护方式与实方式中断主要区别表的大小不同中断描述符表2KB;中断向量表1KB表的位置不同保护方式下的中断描述符表可位于内存的任何位置,由中断描述符寄存器(IDTR)决定;实地址方式下的中断向量表只能固定在00000H~003FFH的最低内存1KB的区域。中断服务程序存放位置不同保护方式下的中断服务程序可以放到内存的任何区域,而实地址方式下的中断服务程序只能在存放的1MB以下的内存区域。2022/12/2343中断嵌套含义:在低级中断中断正在处理时高一级中断请求,则进入高级中断处理程序,处理完高级再返回低级中断处理程序。示意图2022/12/23441)内部中断—软件中断定义:在80X86系统中,通过执行中断指令或由CPU本身启动的中断称为内部中断。专用中断及指令中断内部中断的处理过程内部中断的特点3、80X86中断过程及应用2022/12/2345(1)专用中断及指令中断专用中断0型中断—除法出错中断(DIV或IDIV)类型码为00H的0型中断为除法出错中断。DIV或IDIV指令被执行时,若除数为0或商超过寄存器的字长时,立即产生0型中断。1型中断—单步中断(陷阱中断)。当TF=‘1’时,80X86就处于单步工作方式。即每执行完一条指令后,就自动产生1型中断。2022/12/2346这里提醒注意两点:中断响应后CPU自动保护FR(入栈),并清除TF和IF。故进入单步中断处理后,CPU就不再处于单步工作方式,而是以正常工作方式工作。只有单步处理结束后,从推栈中弹出FR标志,才能使CPU回到单步方式。在80X86指令中,没有TF的设置或清除指令。如要设置或清除TF可利用PUSHF和POPF指令。2022/12/23473型中断—断点中断(INT3以及INTn指令)3型中断是专供在程序中设置断点用的,故称断点中断。用INT3表示。
INTn与INT3的区别在于前者是双字节,而后者是单字节。因而可方便地置于被调用程序之中,其指令置入处即为断点。4型中断—溢出中断(INTO指令)主要用于算术运算出现溢出时(OF=‘1’)。通常与算术指令配合使用。2022/12/2348指令中断(INTN)由指令中的操作数N来提供中断类型码(类型号)2022/12/2349
(2)内部中断的处理过程80X86的各种中断类型的响应和处理过程是不完全相同的主要区别:如何获取相应的中断类型码在内部中断中:①对专用中断:类型码是CPU自动形成的,即
中断功能
中断类型码除法出错0单步1断点3溢出42022/12/2350
②对指令中断INTN(
N为除0~4外的类型码):类型码由指令提供取得中断类型码N后,内部中断的处理过程是相同的,即:①
中断类型码×4→中断向量表指针②
FR入栈(自动)→保护标志位(作用同PUSHF)③
清除IF和TF标志→屏蔽INTR中断和TF中断④
保护断点:CS、IP入栈(自动)⑤从中断向量表指针处取出中断服务子程序入口地址,分别送IP和CS(低位在前,高位在后,偏移量在前,段基值在后)⑥
按新的CS:IP内容执行中断处理子程序。保护现场、中断处理、恢复现场、中断返回(IRET)2022/12/2351(3)内部中断的特点用一条指令来进入中断处理子程序,并且中断类型码或由指令提供,或是预定的。进入中断时,不需执行中断响应周期。CPU既不发出中断响应信号INTA,也不从数据总线上获取中断类型码。除单步中断外,内部中断无法用软件禁止。即不管IF=‘1’或是‘0’,都不影响执行内部中断。但单步中断受TF控制。内部中断(单步中断除外)比外部中断具有更高的优先权。除0型中断外,一般内部中断没有随机性。2022/12/23522、外部中断—硬件中断
外屏蔽中断NMI可屏蔽中断INTR外部中断响应及处理过程2022/12/23531)外屏蔽中断NMI
NMI引脚上产生的中断称为外屏蔽中断。由NMI引脚出现上升沿触发,高电平维持2个T。它不受IF的控制。其中断类型码为02,中断矢量存于0008H~000BH这四个单元之中。NMI产生中断请求后,不管CPU当前正在做何操作,都会响应这个中断请求。故其中断优先权是最高的。2022/12/23542)可屏蔽中断INTR从INTR引脚接受的中断请求信号称为可屏蔽中断。它一般是外部设备产生的。从CPU的INTR端引入高电平触发。INTR受IF的控制。只有IF=‘1’时,才有可能进入其中断处理过程。而INTR的优先权由上节介绍的软、硬件优先权排队电路来决定。
2022/12/23553)外部中断响应及处理过程NMI线上的请求信号是边沿触发的,由80X86内部锁存。故80X86要求NMI线上的请求脉宽要大于2个T。CPU采样到NMI请求后自动提供02中断类型码。其后的处理过程同内部中断。INTR线上的请求信号是电平触发的。CPU内部由CLK来同步。INTR线上的请求信号的高电平必须保持到当前指令结束。2022/12/2356在INTR信号有效时,如果IF=‘1’,则CPU在执行完当前指令后,就立即响应INTR,转入中断响应周期。中断响应周期有两个,每个由4个T构成。在每个中断响应周期CPU都向INTA引脚上发出一个INTA的负脉冲信号,请求中断的外设在收到第二个负脉冲时,立即往数据总线上发送中断类型码。CPU在T4前沿采样数据总线,获取中断类型码。响应2022/12/2357如图:T1T2T3T4TITITIT1CLKALEINTA
D7-D0中断类型T4T2T3中断响应总线周期2022/12/2358
处理过程:PUSHDSMOVAX,0000HMOVDS,AXMOVAX,3210HMOVBX,0100HMOV[BX],AXMOVAX,7654HMOV2[BX],AXPOPDSSTI…MOVAX,2000HADDAX,AXMOV[BX],AX140H号I/O外设申请中断3426587中断类型码40HCPU当前FR、CS、IP入栈78H56H34H12HFRLFRHSPSPIF=‘0’,TF=‘0’(4X40H)IP=3210H(4X40H+2)CS=7654H
形成子程序入口地址
7654:3210PUSHAX;保护现场
…STI;开中断以备嵌套…;中断处理
POPAX ;中断返回IRET执行完ADDCPU响应INTA=‘0’IP、CS、FR出栈形成返回地址1234:5678H和当时状态FR1234:5678H80X86CPU处理INTR的完整过程共8步2022/12/2359
在时序上,共有7个总线周期来完成该中断响应,即:①
执行第一个INTA总线周期,以通知外设准备中断类型码;②
执行第二个INTA总线周期,(8086时两个周期之间插入2~3个T)这时,被响应的外设通过数据总线的低8位D7~D0,提供单字节的中断类型码n(8259A提供),CPU接收中断类型码后,立即左移二位,形成中断向量表指针,存于暂存器;③
执行一个总线写周期,把FR的内容压堆栈。同时,清IF和TF
标志,以禁止其它INTR和单步中断的进入;④执行一个总线写周期,CS内容入栈;⑤执行一个总线写周期,IP内容入栈;⑥执行一个总线读周期,从向量表中取出中断服务子程序入口地址偏移量→IP;⑦
执行一个总线读周期,
从向量表中取出中断服务子程序入口段地址→CS。然后就转入中断服务子程序的处理。断点入栈2022/12/2360
概括整个中断响应过程.我们发现:对NMI和软件中断,则是跳过1~2步,从3~7开始执行。2022/12/2361中断优先级识别中断优先级排队:把多个中断源按轻重缓急优先处理权由高到低的顺序排列起来。排队方法:软件排队和硬件排队。在8086~PentiumⅣ系统中,中断优先级从高到低依次为:
内部异常中断(除单步)>INTn>NMI>INTR>单步中断2022/12/23622022/12/23632022/12/23647.4可编程中断控制器8259A*基本情况:
(1)8位可编程中断控制器,又称优先级控制器
(2)处理8级向量优先级中断
(3)具有单一+5V供电
(4)8259A芯片级联组成强大的中断管理系统(多至64级外部中断)。
(5)优先级方式可编程
(6)多级中断管理主要内容
一、内部结构及工作原理
和功能二、引脚信号
三、工作方式
四、编程方法2022/12/23658259A中断控制器(可编程)(PIC)
中断控制器的功能是在有多个中断源的系统中,接收外部的中断请求,判断中断优先权,并将级别最高的请求送到CPU的INTR端,当CPU响应中断并进入中断子程序的处理过程后,中断控制器仍负责对外部中断请求的管理。Intel8259A是专门设计的中断控制芯片,它将中断源优先级排队,判优,提供中断类型码的电路集于一体,可管理8级(64个)中断。(级连)2022/12/2366一、内部结构及工作原理2022/12/2367内部结构
内部由IRR(中断请求R)优先权电路、ISR(中断服务R)、IMR(中断屏蔽R)、数据总线缓冲器(DBBUF)、读/写电路(R/WC)控制逻辑(CL)和级连缓冲/比较器组成。 每片8259A有8条中断请求信号线IR0~IR7,其中断请求信号通过IRR和ISR来处理:IRR:寄存所有要求服务的中断请求(8B)ISR:寄存所有正在被服务的中断级(8B)IMR:寄存所有被屏蔽的中断请求,(1→屏蔽该位中断)(8B)2022/12/2368优先权电路:对IRR中的中断源判断,并送至ISR数据总线缓冲器:(8B)三态双向缓冲器,用于连接CPUDB和8279A内部总线,输入/输出控制字,状态字,状态信息。读写电路:用来对8259进行初始化命令字(ICW)、操作字(OCW)的输入,以确定其工作方式和控制模式,以及读出有关状态信息。级连缓冲器:用于多片8259A之间的连接,使8级中断源可扩展至64级控制逻辑:完成对芯片的控制操作。2022/12/23698259A的工作原理
当系统通电后,首先应对8259A进行初始化,8259A处于待命状态。当外设发出中断请求后,8259A对其中断请求的处理过程如下:1)IR0—IR7有一条或若干条(跳变或高电平),IRRi=‘1’
2)IR0—IR7至少有一个是中断允许的,8259A由INT引脚向CPUINTR请求3)
STI→=‘1’→CPU用INTA响应(当前指令完成)2022/12/23704)
第一个INTR到达,最高优先权的ISRi=‘1’→IRRi=‘0’5)
第二个INTR到达,8259A向DB输出一个8位的向量号(类型号)INW2→D0—D7,CPU读取此类型号*4(左移2位)→中断向量指针→从向量表中取出入口地址(CS、IP)6)
若8259A工作于自动结束时→ISRi=‘0’。否则,直至终端服务程序结束,发出EOI命令→ISRi=‘0’2022/12/2371功能:具有8具有优先权控制通过级连可扩展至64级优先权控制;每一级都可以由软件屏蔽或允许(开放);在中断响应时,可提供相应的中断类型码;可通过软件来设定其工作方式。2022/12/2372数据总线缓冲器数据总线缓冲器是一个三态、双向的8位缓冲器,是8259A与CPU系统数据总线的接口。数据总线缓冲器的主要功能有:
(1)通过数据总线缓冲器,CPU向8259A内部发送命令。
(2)CPU接收8259A状态信息。
(3)在中断响应周期,CPU从中获得中断类型号。2022/12/2373读/写逻辑接收CPU送来的读/写控制信号、片选信号以及地址选择信号以对内部控制逻辑编者编程以确定工作方式2022/12/2374级联缓冲/比较器级联缓冲/比较器在级联方式的主从结构中(两个以上的8259A组成的系统),用来存放和比较系统中各8259A的从设备标志(ID)。2022/12/2375控制逻辑控制逻辑是控制8259A内部各个部件的主要逻辑电路。主要功能包括:
(1)根据CPU对8259A编程设定的工作方式来产生内部控制信号。
(2)如果中断请求寄存器IRR有未被屏蔽的位,则控制逻辑对应于当时最高优先的中断源,向CPU发中断请求信号INT。
(3)接收CPU送来的中断响应信号,并允许中断服务寄存器ISR的相应位(ISRi)置位。(4)控制发出相应的中断类型号,通过数据总线缓冲器输出到系统总线上。2022/12/2376中断请求寄存器IRRIRR是一个专门用于记录外部中断源的中断申请的8位寄存器。IRR的8个输入端分别可接8个中断源,只要有中断请求即IRR的某端(IRRi)由低电平变高电平时,则相应的IRR位置1(IRRi=1),直到中断服务寄存器相应位置1,IRR相应位才复位。2022/12/2377中断优先权分辨器PR优先权分辨器PR用来确定存放在IRR中各个中断请求信号对应中断源的优先级。
并总是选出当前最高优先中断源的中断申请通知控制逻辑,以便控制逻辑发送中断请求信号INT。2022/12/2378中断服务寄存器ISRISR为用于记录正在被CPU处理(服务)的中断级的8位寄存器。当有中断请求并被CPU响应时,即在CPU响应中断后发来第一个中断响应脉冲时,将对应的中断服务寄存器相应位置1,直到结束中断或有中断结束命令才复位。2022/12/2379中断屏蔽寄存器IMRIMR是8位的用于从硬件上屏蔽中断源的寄存器。如果IMR相应位为1,则对应中断源的中断请求被屏蔽。只有相应位为0且IF=1,CPU才有可能响应可屏幕中断。2022/12/2380二、引脚信号D7~D0为8位双向的数据线INT:中断请求输出信号INTA:中断响应输入信号RD和WR:读/写控制信号CS:片选信号A0:端口选择信号(两个端口地址)IRRi:8个中断源中断请求端SP/EN:级联控制
主:=1,从=02022/12/2381三、工作方式优先级的方式屏蔽中断源的方式结束中断处理的方式连接系统总线的方式中断请求信号方式2022/12/2382优先级的方式全嵌套方式特殊全嵌套方式优先级自动循环方式优先级特殊循环方式2022/12/2383全嵌套方式仅允许高一级中断进入嵌套。从高到低优先级依次为IR0>IR1>IR2>IR3>IR4>IR5>IR6>IR7。2022/12/2384特殊全嵌套方式允许高一级,也允许同级中断进入嵌套。从高到低优先级依次为IR0>IR1>IR2>IR3>IR4>IR5>IR6>IR7。2022/12/2385优先级自动循环方式在这种方式下,中断源的优先级是变化的,当一个设备得到中断服务以后,它的优先级自动降为最低优先。在初始状态下的优先级为IR0>IR1>...>IR7,下一次优先级为IR1>IR2>....>IR6>IR7>IR0,依次类推。2022/12/2386优先级特殊循环方式与优先级自动循环方式只有一点区别:初始最优者可由程序设定,可任意指定一个初始最高优先级,以后再循环优先。2022/12/2387屏蔽中断源的方式普通屏蔽方式:设置8259A内部中断屏蔽寄存器IMR的相应位为1(通过OCW1),即可屏蔽对应中断源的中断申请。特殊屏蔽方式:先写入特殊屏幕命令字OCW3,然后再写屏蔽命令字OCW1。使当前中断服务寄存器ISR的相应位自动复位。这就只屏蔽了当前正在处理的这级中断。2022/12/2388结束中断处理的方式自动结束方式:系统一旦进入中断服务程序,8259A就自动将当前中断服务寄存器相应位清0。(在第二个中断响应脉冲)非自动结束方式:在中断服务程序结束,返回主程序之前发一条中断结束命令,使8259A的当前最高优先级的中断对应的ISR复位。2022/12/2389连接系统总线的方式缓冲方式:
一般在多片8259A级联系统中,8259A通过总线驱动器与系统总线相连,而不是8259A直接与系统总线相连,这就是缓冲方式。非缓冲方式:
当系统只有一片8259A或少量几片8259A时,一般将它直接与数据总线相连。这就是所谓的非缓冲方式。2022/12/2390中断请求信号方式边沿触发方式:
在边沿触发方式下,8259A将中断请求输入端出现的上升沿作为中断请求信号,且该信号可以一直保持为高电平。为了防止干扰,其高电平也应有一定的宽度。电平触发方式:
8259A把中断请求输入端出现的高电平作为中断请求信号。但应注意的是,当中断请求被响应后,输入端必须立即撤消高电平,以免引起再一次中断。2022/12/2391四、编程方法一般原则:先进行初始化编程,再进行控制命令编程8259A的初始化编程8259A操作命令字的编程2022/12/23928259A的
初始化编程对8259A进行初始化编程就是向8259A写入两到四个初始化命令字。流程如图。初始化编程任务:
●设定中断请求信号的有效形式。
●设定8259A是单片还是多片级联方式。
●设置中断类型号。
●设置优先排队规则。
●设定中断结束时的操作原则。2022/12/23938259A的编程
对8259A的编程可以分为二部分:①
初始化编程:由CPU向8259A送2~4个字节的初始化命令字ICW。(InitializationCommandWord),→使8259A处于准备就绪状态(可接收Iri中断请求)②
工作方式编程:由CPU向8259A送3个字节的工作(操作)命令字OCW(OperationCommandWord)→规定8259A的工作方式*OCW可在8259A已结束初始化后的任何时间内写入2022/12/23948259A的初始化编程
8259A有A0一条地址线,可选择偶/奇两个地址。。在初始化时,ICW,写入偶地址命令寄存器,IC2~IC4(顺序)写入奇地址寄存器。初始化过程如图1.
ICW1—芯片控制字目的(作用):①复位边沿检测电路,使(边沿或电平)Iri上升沿才能产生中断;②IMR=0(屏蔽开放)优先权排队IR0→IR7(最低)①②→复位8259A(∵8259A无RESET)②
指出系统中是单片还是多片8259A故在80X86系统中,ICW1定义如图2022/12/23952.W2—中断类型码目的(作用):向CPU提供8个中断类型码*只提供高5位,低3位自动填入,如图中断类型码8H(IR0)—0FH(IR7)*高5位一旦确定,IR0—IR7的中断类型码就确定了2022/12/23963.
ICW3—主/从控制字:指明级连状态在ICW1(D1)中,D1=1,→不用ICW3Dr=0,→级连,用ICW3,级连可扩展至64个中断源。这时,主/从控制字ICW3是不同的,分别为2022/12/23974.
ICW4—方式控制字奇地址*自动EOI:第2个INTA后清ISRi,不屏蔽中断,(低级或同级)→无嵌套→可能乱*正常EOI:IRET前,发结束中断命令字,清ISRi能屏蔽低级中断,亦可中断嵌套(高级)级连时,发二个EOI:一个给8259A主一个给8289A从*ICW1~ICW4在写入时需完全按图的流程顺序写入命令字以示区别,否则8259A将不能正确的工作。2022/12/2398例,对8259A设置寝化命令字,设端口地址为20H,21H MOVAL,00010011BOUT20H,ALMOVAL,00011000BOUT21H,ALMOVAL,00001101BOUT21H,AL2022/12/2399;设置ICW1:边沿触发,一片8259A要ICW4;设置ICW2:中断类型码为18H—1FH;设置ICW4:(ICW1(D1)=1→1片,不要ICW3:不用特殊主嵌套方式,也不用AEOI方式,而用缓冲方式,正常EOI命令清ISR2022/12/231008259A的操作命令字
8259初始化后,其工作方式就确定了,即,优先权IR0—IR7(高→低)Iri服务时,ISRi=1,禁止同级或低级中断,若Iri低,有Iri-1高级时,(IF=1)Iri-1,ISRi不变,挂起,至Iri-1结束发EOI,ISRi-1=0,IRET,返回低级Iri中断处执行。若要改变此方式,或读出IRR、ISR、IMR内容,则需要写入操作命令字OCW。OCW有3个,即OCW1—OCW3,顺序无定义。2022/12/231011.OCW1—屏蔽命令字作用:屏蔽Iri的中断源申请,→间接改变优先权。2.
OCW2—中断方式字中断优先级循环—1非循环—02022/12/23102可知,OCW2的作用为:1.
设置优先级循环方式2.
设置中断结束方式8259有3种中断结束方式(1)中断自动结束方式:只用于一片2859,无中断嵌套情况,IC·4的D1(AEOI)=1,CPU响应中断后,立即清除ISRn,即第二个INTA到后,就清除了ISR,故无嵌套
2022/12/23103(2)
中
用的一般断方式于全嵌套方式,CPU用OCW2(R、SL,EOI)=001发也一般(正常)中断结束命令时,8259A把当前ISR的最高位复位,这时的最高位对应于最后一次被响应的中断,故为结束当前中断,2022/12/23104(3)
特殊的中断结束方式当IR0—IR7优先级改变时,就不能确定正常EOI清除的ISRn位,而必须通过OCW2的R、SL、EOI(011)且指定L2—L0为初清除的ISRn位。8259的优先级设置方式有以下几种:2022/12/231051:
全嵌套方式ICW4(D4)=0Irn申请中断(优先级IR0—IR7)→中断类型码n送D·B→对应的ISRn置位,→进入中断服务程序→中断结束时,CPU发出EOI(正常)命令→ISRn复位(当前)可能是中断嵌套(优先级允许高级中断产生嵌套)2022/12/231062:
特殊全嵌套方式类似全嵌套方式,不同的是除高级中断嵌套外,还允许同级中断嵌套,主要用于多级8259管理。*对2级的8259来说,IR0—Irn有优先级高低之分,但对1级8259来说,就只有Iri这一同级了2022/12/231073:
优先级自动循环方式优先级设定:利用OCW2改变优先级,例,设IR3最高,则IR2就自然为最低了,IR3IR4、5、6、7、0、1、2同级中断源,往往采用优先级自动循环方式,即一个设备被服务后,其优先级就变最低,原来次高的设备为最高,上例IR3响应后,优先级为IR4、5、6、7、0、1、2、3自动循环方式又分为二种:2022/12/23108一种为在EOI下的循环,由R、SL、EOI=101设置一种为在AEOI下的循环,由R、SL、EOI=100设定,000清除,(即恢复循环前的优先级)2022/12/23109特殊循环:指定最低优先级,例IR3最低则IR4最高由OCW2R、SL、EOI=110时,L2UL0指定最低级OCW2R、SL、EOI=111时,L2UL0指定最低级,同时清除当前ISRn位(特殊EOI方式下循环)例:设IR5最高OCW4=1100010时,则IR5对应的ISR5复位,同时优先级为IR3、4、5、6、7、1、22022/12/231103.
OCW3—状态插操作命令字作用:①设置和撤消特殊民间蔽方式①
设置中断查询方式②
设置对8259内部寄存器读出命令无操作2022/12/231111.
OCW3—状态插操作命令字作用:①设置和撤消特殊民间蔽方式①
设置中断查询方式②
设置对8259内部寄存器读出命令无操作2022/12/231128259共有4个状态字可供查询,它们是IRR:中断请求RISR:中断服务RIMR:中断屏蔽R以及中断状态字有中断请求—1无中断请求—0最高请求优先级编码2022/12/23113例:MOVAL,0001010BOUT20H,ALINAL,20H;读IRRMOVAL,00001011BOUT20H,AL2022/12/23114INAL,20H;读ISRMOVAL,00001100BOUT20H,ALINAL,20H;读中断状态INAL,21H;读IMR2022/12/23115芯片初始化命令字ICW12022/12/23116中断类型初始化命令字ICW2要写入8259A的A0=1的端口2022/12/23117主/从片初始化命令字ICW3
——主片ICW3要写入8259A的A0=1的端口IRi=1,指示IRRi处接一从片2022/12/23118主/从片初始化命令字ICW3
——从片ICW3要写入8259A的A0=1的端口ID2,ID1,ID0编码决定从片的IRRi接主片2022/12/23119控制初始化命令字ICW4要写入8259A的A0=1的端口各位含义:
μPM:CPU类型,0=8080/8085,1=80X86。
AEOI:自动结束中断方式,AEOI=1自动中断结束方式。M/S:主/从片选择,1=主片,0=从片。BUF:缓冲方式。BUF=1工作在缓冲方式。SFNM:特殊全嵌套方式。SFNM=1,特殊全嵌套方式。2022/12/231208259A初始化编程实例系统对主片8259A初始化的要求是:(如图所示)
●主片的IR2接从片的INT端。
●主片中断信号为边沿触发方式。
●级联但无缓冲。
●起始中断类型号为08H(IR0)。
●正常的中断结束,不选择特殊的全嵌套方式。
● 级联方式要ICW3和ICW4。对从片的要求是:
●从片的INT接主片的IR2。
●从片起始中断类型号为70H。
●级联方式要ICW3和ICW4。2022/12/23121实例系统图2022/12/23122编程实例解(主片)主片初始化程序段:
MOVAL,00010001B ;ICW1:边沿,ICW4,ICW3
OUT20H,AL ;写入ICW1
MOVAL,00001000H ;ICW2:IR0中断类型号为08H
OUT21H,AL ;写入ICW2
MOVAL,00000100B ;ICW3:主片IR2接从片INT
OUT21H,AL ;写入ICW3
MOVAL,00000001B ;ICW4:非缓冲,正常中断结束,非特殊全嵌套方式
OUT21H,AL ;写入ICW42022/12/23123编程实例解(从片)从片初始化程序段:
MOVAL,00010001B ;ICW1:边沿,ICW4,ICW3
OUT0A0H,AL ;写入ICW1
MOVAL,01110000H ;ICW2:IR0中断类型号为70H
OUT0A1H,AL ;写入ICW2
MOVAL,00000010B ;ICW3:从片接主片的IR2
OUT0A1H,AL ;写入ICW3
MOVAL,00000001B ;ICW4:非缓冲,正常结束,非特殊全嵌套方式
OUT0A1H,AL ;写入ICW42022/12/231248259A操作命令字的编程中断屏蔽命令字OCW1控制中断和优先级循环的操作命令字OCW2屏蔽查询状态命令字OCW32022/12/23125中断屏蔽命令字OCW1
Mi=1表示对应的IRi中断源被屏蔽,Mi=0则取消屏蔽(i=0,1,2,3,4,5,6,7)。要求写入8259A的A0=1的端口2022/12/23126控制中断和优先级循环的操作命令字OCW2
R:优先级循环位,R=1为循环优先。SL:指定IRi级别位。SL=1时L2~L0有效。L2~L0:编码指定IRRi要求写入8259A的A0=0的端口2022/12/23127屏蔽查询状态命令字OCW3
ESMM:特殊屏蔽允许,SMM:特殊屏蔽位。P:管理查询方式。当P=1时可用作查询方式RR:读寄存器命令位,RR=1读寄存器IRR和ISR,RR=0禁止读这两个寄存器的内容。RIS:寄存器选择位,RR=1时且RIS=0读IRR寄存器,RIS=1读ISR寄存器的内容。要求写入8259A的A0=0的端口2022/12/23128操作命令编程实例MOVAL,11110000H;主片OCW1,屏蔽主片的IR7,IR6,IR5和IR4
OUT21H,AL ;写入主片的OCW1MOVAL,10000001H;从片OCW1:屏蔽从片8259A的IR0和IR7
OUT0A1H,AL ;写入从片的OCW1
MOVAL,00100000H;OCW2:结束最高中断,清ISR相应位,发普通中断结束命令
OUT0A0H,AL ;先向从片发中断结束命令
OUT20H,AL ;后向主片发中断结束命2022/12/231298259A状态的读取中断屏蔽寄存器IMR的读取
读取IMR只需用一条IN指令
IN AL,21H ;A0=1的偶地址端口中断请求寄存器IRR的读取
MOVAL,0AH;发读取IRR的OCW3命令字OUT20H,AL;写入A=0的偶地址端口
IN AL,20H ;读IRR内容到AL中中断服务寄存器ISR的读取
MOVAL,0BH ;发读取ISR的OCW3命令字 OUT20H,AL ;命令字写入A0=0的端口
IN AL,20H ;读ISR内容到AL中2022/12/23130中断调用及中断程序设计版权所有,南京航空航天大学2022/12/23131理解中断调用指令的执行过程INTn指令IRET指令2022/12/23132INTn指令的执行过程(1)SP=SP-2
(2)PSW(FLAGS)入栈
(3)SP=SP-2
(4)断点地址(INTn的下一条指令)的CS入栈
(5)SP=SP-2
(6)断点地址的IP入栈
(7)IP=[0000:n*4]
(8)CS=[0000:n*4+2]2022/12/23133IRET指令的执行过程(1)IP=[SS:SP]
(2)SP=SP+2
(3)CS=[SS:SP]
(4)SP=SP+2
(6)PSW=[SS:SP]
(7)SP=SP+22022/12/23134中断调用BIOS功能调用
供助于存于系统板ROM中的BIOS程序实现功能调用,它是最直接控制硬件的系统程序,是其它程序(OS,用户程序等)与硬件的接口程序。DOS功能调用
供助于DOS操作系统提供的处理程序实现功能调用。2022/12/23135BIOS中断调用BIOS中断类型BIOS调用方法BIOS调用示例2022/12/23136BIOS中断类型
2022/12/23137BIOS调用方法在AH寄存器中设置调用子程序的功能号根据要求设置入口参数使用INTn指令转入BIOS程序入口,其中n为中断类型号程序运行完毕后,如果有出口参数,则按规定取得出口参数2022/12/23138BIOS调用示例显示功能日期和时间键盘服务2022/12/23139BIOS显示功能调用10H示例在当前光标处显示一个字符‘$’,光标自动后移,功能号AH=0EH入口参数:要显示的字符在AL中调用方法:MOVAH,0EH
MOVAL,’$’
INT10H2022/12/23140利用BIOS日期调用读取日期读系统日期,功能号04H入口参数:无出口参数:CX=年(带世纪),DH=月,DL=日调用方法:MOVAH,04
INT1AH2022/12/23141利用BIOS日期调用设置日期读系统日期,功能号05H入口参数:CX=年(带世纪),DH=月,DL=日出口参数:无调用方法:MOVCX,2002H;2002年
MOVDX,0512H;5月12日
MOVAH,05
INT1AH2022/12/23142利用BIOS时间调用读取时间读系统时间,功能号02H入口参数:无出口参数:CH=时,CL=分,DH=秒调用方法:MOVAH,02
INT1AH2022/12/23143利用BIOS时间调用设置时间读系统时间,功能号03H入口参数:CH=时,CL=分,DH=秒出口参数:无调用方法:MOVAH,03
MOVCX,1209H;12:09
MOVDH,0
INT1AH2022/12/23144BIOS键盘服务调用16H示例从键盘缓冲区读取字符入口参数:AH=1出口参数:ZF=0,AH=键盘扫描码,AL=ACII码字符
ZF=1,无键按下调用方法:MOVAH,1
INT16H2022/12/23145DOS中断调用DOS中断类型DOS调用方法DOS调用示例2022/12/23146DOS中断类型
2022/12/23147D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2022年业务员辞职报告15篇
- 护士的实习报告模板锦集五篇
- 城中村改造项目建设方案
- 室内设计师工作总结范文
- 药学院学生实习报告
- 2024年国际贸易交涉流程与协议订定指南
- 2024年委托代扣企业投资回报收益分配授权合同3篇
- 老旧厂区改造技术可行性分析
- 物联网基础课程设计
- 2024年股份投资合作协议模板版B版
- 门诊病历书写模板全
- 煤油(火油)的理化性质及危险特性表MSDS
- 锅炉延期检验申请书
- 液压与气压传动中职PPT完整全套教学课件
- 国开大学2023年01月11067《知识产权法》期末考试答案
- 直接打印800字作文纸
- 石油产品密度基本知识认知
- (完整word版)人教版高中数学大纲
- 货物供货总体服务方案
- 青岛版二年级数学下册《周期问题》教案
- 第三章热力学第二定律物理化学
评论
0/150
提交评论