微机原理与接口第7章课件_第1页
微机原理与接口第7章课件_第2页
微机原理与接口第7章课件_第3页
微机原理与接口第7章课件_第4页
微机原理与接口第7章课件_第5页
已阅读5页,还剩128页未读 继续免费阅读

下载本文档

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

文档简介

1、第7章 微机的中断系统版权所有, 2000 (c) 南京航空航天大学计算机科学与工程紊提示本章是微机原理及接口课的一个重点和难点。 本章主要内容基本知识中断与异常、中断分类、实地址方式与保护方式下的中断*、中断过程等可编程中断控制器*8259A的内部结构及工作原理*、8259A的引脚信号、8259A的工作方式*、8259A的编程方法*、高级中断控制器中断调用及其应用7.1 中断的基本知识一、中断与异常二、中断分类三、实方式与保护方式下的中断四、中断过程五、外部中断源的管理一、中断与异常1.中断2.异常3.中断和异常的区别4.异常的类型什么是中断 所谓中断,是指处理器在执行正常程序过程中,当出现

2、某些异常情况或某个外部设备请求时,处理器暂时中止正在执行的程序,转而去执行其特定的服务程序,并在执行完服务程序后返回原来被中止的程序处继续执行的过程。返 回什么是异常?异常是指把因内部意外条件而改变程序执行流程以报告出错情况和非正常状态的过程称为异常中断(简称异常)。INT n也归到异常之中 返 回中断和异常有什么区别?(1)中断处理异步发生的外部事件。(各种外部设备数据传送的请求及时钟中断 )(2)异常处理同步发生的内部事件。(处理指令失效 )(3)硬件中断是作为外部事件的结果而发生的。(可屏蔽中断和不可屏蔽中断 )(4)中断是在当前指令执行完后才去执行服务程序的,在中断处理程序完成中断服务

3、后,程序继续执行被中断指令之后的指令。返 回异常有哪几种类型?(1)失效(2)陷井(3)终止什么是失效失效又称为故障(Faults):是在引起异常的指令之前被检测和处理。在执行完失效对应的服务程序后,会返回到该失效指令处,重新执行该指令。例:在虚拟存储器系统中,当处理器涉及的页或段不在物理存储器中时,就会产生一个失效异常。操作系统从盘上读取这个页或段,会重新启动指令。因此失效异常可以正常执行下去。 返 回什么是陷井?陷井(Traps)是在引起异常的指令执行之后才被报告,且服务程序完成后,返回到原程序引起异常指令的下一条指令处继续向下执行。 陷井与中断处理方法一样,但与失效不同.例:用户定义的软

4、件中断就是一种陷井。这与中断引起的处理方法一样返 回什么是终止?中止(Abort)是一种不能确定引起异常指令确切位置的异常(有时称为夭折或失败)。例:协处理器段溢出 ,原来的程序无法再执行下去,因此服务程序往往重新启动操作系统,运行某些软件时,经常会莫名其妙地自动启动系统,这就是所谓的中止异常引起的。 返 回二、中断分类(内部中断和外部中断 )返 回内部中断或异常1失效异常2陷井异常3中止异常中断分类图主要失效异常除法出错、调试异常、界限检查、无效操作码、协处理器不存在、无效TSS、段不存在、堆栈段溢出、一般性保护错、页面出错、协处理器错(仅80286)、机器检查(PentiumPentium

5、 III)等。返 回主要陷井异常系统中的主要陷井异常包括单步陷井、断点异常、溢出以及中断指令INT n等。中断分类图返 回主要中止异常系统中的主要中止异常包括双重故障(在执行一个异常处理程序中又出现另一个异常)、协处理器段溢出等。重新启动系统,结束任务广义上讲,异常属于内部中断 中断分类图返 回外部中断1不可屏蔽中断(NMI)2可屏蔽中断(INTR)3. 中断和异常功能表 中断分类图不可屏蔽中断含义:不能用软件来控制是否允许中断的一种外部中断。常见NMI中断(中断类型号规定为2)有:(1)电源掉电 (2)存储器检验出错(3)总线奇偶错等。中断分类图返 回见P271表可屏蔽中断含义:可用软件控制

6、是否允许中断的外部中断。即STI使IF=1,允许中断;CLI使IF=0,禁止中断。常见INTR中断有:所有外部设备中断如键盘、鼠标、打印机、显示器、声卡、CD-ROM等中断分类图返 回中断和异常功能表 处理器对应的中断/异常类型及功能如Page271表7.1所示。表中列出了16位处理器808620286及32位处理器80386Pentium 4对应的中断或异常类型、 功能及在实地址方式下的中断向量存放的内存地址。 Intel 保留了前32个(00H20H)中断向量供处理器使用,后面的20HFFH供用户使用。保留的中断用于系统功能。对于80286Pentium 4处理器,异常16、7、9、16和

7、17可用于实方式和保护方式,而其余异常仅适用于保护方式。 中断和异常功能表对于某一个类型号而言(如080FH),为区分是INTR引脚引起的外部中断,还是内部引起的异常,在处理之前,要判断出错代码中的EXT位,如果EXT=1则执行外部中断处理程序,EXT=0执行异常处理程序。 出错代码对于内部异常引起的中断,系统引入了异常出错代码,出错代码在CPU响应中断或异常时随断点地址之后被压入堆栈保护。异常出错代码为32位(80386Pentium 4),只有低16位有效,最低位(D0)为EXT,为1时表示是外部中断引起的,为0表示内部异常引起的,次低位(D1)IDT为1时表示访问IDT表,为0表示访问G

8、DT或LDT表, D2位TI为1表示访问GDT表,为0表示访问LDT表,D15D3为IDT、GDT或LDT的索引值(同选择子中的索引),D31D16未用。 返 回三、实方式与保护方式下的中断1.术语及概念2.实方式下中断服务程序入口地址3.保护方式下中断服务程序入口地址*4.保护方式与实方式中断主要区别术语及概念中断类型号中断向量中断向量表中断描述符中断描述符表中断类型号中断类型号:中断类型的唯一编号。01H,05H(与IRQ0IRQ10中断号不是一个意思)数量:256个。(包括外部中断和内部中断或异常) 编号:0255。适用范围:8086Pentium 4(各种工作方式)返 回中断向量(实地

9、址方式)含义:中断服务程序的入口地址(CS:IP)组成及格式:共4个字节,段地址及偏移地址各两个字节。返 回中断向量表含义:存放256个中断向量的内存区域。即存放中断服务程序入口地址的内存区域称为中断向量表。中断向量表大小:1KB(256X4字节)中断向量表地址范围:00000H003FFH。适用范围:实地址方式。返 回中断向量组成及格式返 回中断描述符(保护方式)含义:描述某中断对应中断服务程序的入口地址信息及其属性,包括32位偏移地址和16位段选择子。P为存在位,P=1表明中断描述符在物理存储器中;DPL为中断描述符特权级两位,共4级,00,01,10,11,其中00为最高级,11为最低级

10、。 组成及格式:8个字节返 回中断描述符表含义:存放256个中断描述符的内存区域。中断描述符表容量:2KB。(256x8字节)适用范围:保护方式和V86方式。返 回实方式下中断服务程序入口地址中断类型号n与其对应的中断向量存放起始地址之间的关系是:起始地址=4n;末地址=4n+3即中断向量在4n 4n+3指示的内存单元中示例返 回实地址方式下的中断服务程序入口地址求法(例子)【例1】假设在实地址方式下,内存单元00140H到00147H中存放的内容如图所示,求51H号中断的中断服务程序入口地址。解:例1求解(1)求中断向量存放的首地址和末地址 51H可知中断向量存放首地址为51H4=144H(

11、左移两位方法) 末地址=51H4+3=147H(2)从首末地址对应的4个单元找出中断向量00144H到00147H中内容就是51H号中断的中断向量。 对照中断向量组成及格式可知 段地址=4540H,偏移地址=3430H, 所以中断服务程序入口地址为 段地址16+偏移地址=45400H+3430H=48830H01010001*100=101000100返 回保护方式下中断服务程序入口地址(1)通过中断类型号n从中断描述符表IDT中找出中断描述符。 中断描述符首地址=中断类型号码n8+IDT基地址 从该地址开始取出8字节内容就是中断描述符。(2)通过中断描述符中的选择子第3位TI从GDT或LDT

12、中找出或求出段描述符。(TI=0选中GDT,TI=1选中LDT) (3)据段描述符提供的段基地址与中断描述符提供的偏移地址合成物理地址。示例保护方式下的中断服务程序入口地址求法(例子)【例2】已知保护方式下,内存单元中有关单元存放的内容如右图所示,IDT的首地址为00280000H,GDT首地址为00500000H,求20H号中断服务程序入口地址。解:例2求解(1)求偏移地址 先找中断描述符,然后从中找出中断服务程序,偏移地址由n=20H可知,中断描述符存放在00280000H+20H8=00280100H开始的8个单元,所以中断描述符为: 00 42 EE 00 00 13 20 12 H(

13、2)求中断服务程序所在段的段基地址 段选择子为 :0013H=0000 0000 0001 0 011 B TI=0,段描述符在GDT中,RPL=11为普通用户程序请求, 索引值 =0000 0000 0001 0 B 所以中断描述符所在段描述符在GDT中的位置为: 索引值8+GDT首地址= 0000 0000 0001 0000B+00500000H=00500010H 因此,段描述符为:39 18 40 42 34 00 00 96 H 段基地址=39423400H(3)合成物理地址 服务程序入口地址=对应段的段基地址+偏移地址 =39423400H+00422012H=39845412H

14、返 回保护方式与实方式中断主要区别(1)表的大小不同中断描述符表2KB;中断向量表1KB(对于实地址方式,中断描述符表就是中断向量表。) (2)表的位置不同保护方式下的中断描述符表可位于内存的任何位置,由中断描述符寄存器(IDTR)决定;实地址方式下的中断向量表只能固定在00000H003FFH的最低内存1KB的区域。(3)中断服务程序存放位置不同保护方式下的中断服务程序可以放到内存的任何区域,而实地址方式下的中断服务程序只能在存放的1MB以下的内存区域。返 回四、中断过程1.中断请求2.中断判优3.中断响应4.中断服务(处理)5.中断返回中断请求含义:中断源发出中断请求信号外部中断源主要有:

15、(1) I/O设备,如键盘、显示器、打印机等。(2) 数据通道,如软、硬磁盘,磁带等。(3) 实时钟,如外部所需的定时电路等。(4) 故障源,如掉电、存储器奇偶校错等。内部中断源主要包括:(1) CPU指令产生异常,如被0除,溢出,单步等。(2) 程序执行INT软件中断指令,如INT 19H等。返 回中断判优由于中断是随机的,可能同时出现多个中断源同时请求中断时,必须对申请中断的中断源进行优先级判别,这一阶段称为中断判优。返 回中断响应中断响应过程:把从接到中断请求到中断处理之前,即从请求有效到转中断服务程序入口地址这一段时间。可屏蔽中断的响应过程返 回可屏蔽中断的响应过程(1) 处理器接到中

16、断申请,处理完当前指令即进入响应周期。(2) 第二阶段即中断响应周期,在其间CPU向外部中断控制器发送两个响应脉冲信号INTA。第一个响应脉冲通知中断控制器,已经响应外部中断请求,让中断控制器提供中断类型号。第二个响应脉冲,CPU取走中断类型号。(3) 将标志寄存器中的内容压入堆栈保护,然后清IF和TF标志,以禁止INTR引脚以及陷阱和单步中断。(4) 将断点地址压入堆栈(CS:EIP或CS:IP)。断点地址:指中断时CPU待执行的下一条指令对应的逻辑地址。顺序:先压入断点地址的CS,后压入偏移地址EIP(或IP)。(5) CPU得到中断类型号码n后,通过中断类型号与中断服务程序入口地址的关系

17、找出该类型对应的段基地址和偏移地址,从而转入中断服务程序入口地址。完成中断响应任务。返 回不可屏蔽中断或内部中断对于不可屏蔽中断或内部中断(或异常),由于类型是确定的,因此它们的中断响应过程无需(2)步,而(5)中取类型号不通过中断控制器。对于异常在断点地址压入堆栈后,还要将引起异常的出错代码压入堆栈。 返 回中断服务(处理)1保护现场保护现场实质:将重要信息压入堆栈。 (PUSH)2开中断目的:开放所有可屏蔽中断,以允许高级中断嵌套。(STI)3执行中断服务程序4关中断目的:使用关中断指令CLI关中断以确保可靠有效地恢复现场。 (CLI)5恢复现场恢复现实质:将原来压入堆栈中的内容弹出来。恢

18、复现场的指令是POP。在恢复现场时必须注意堆栈操作的原则:先进后出(FILO)。返 回中断返回中断服务程序的最后一条指令都无一例外地使用中断返回指令(如IRET/IRETD)。中断返回的目的:使原来在中断响应过程中的断点地址和标志寄存器中的内容,依次从堆栈中弹出,以便继续执行原来的程序。返 回五、外部中断源的管理问题的引出:多个外部中断源同时请求中断,而CPU仅一个INTR引脚,如何处理?解决方法:对中断控制器硬件编程实现中断管理。中断源管理的任务:区别中断源、识别中断源优先级以及处理多级中断嵌套问题。中断优先级识别中断优先级排队:把多个中断源按轻重缓急优先处理权由高到低的顺序排列起来。排队方

19、法:软件排队和硬件排队。p275在8086Pentium 4系统中,中断优先级从高到低依次为:内部异常中断(除单步)INT n NMI INTR 单步中断多级中断嵌套含义:在低级中断中断正在处理时高一级中断请求,则进入高级中断处理程序,处理完高级再返回低级中断处理程序。示意图7.2 可编程中断控制器8259A基本情况:(1)8位可编程中断控制器,又称优先级控制器(2)处理8级向量优先级中断(3)具有单一+5V供电(4)8259A芯片级联组成强大的中断管理系统(多至64级外部中断)。(5)优先级方式可编程(6)多级中断管理可编程中断控制器8259A一、内部结构及工作原理二、引脚信号三、工作方式四

20、、编程方法一、内部结构及工作原理返 回数据总线缓冲器数据总线缓冲器是一个三态、双向的8位缓冲器,是8259A与CPU系统数据总线的接口。数据总线缓冲器的主要功能有:(1) 通过数据总线缓冲器,CPU向8259A内部发送命令。(2) CPU接收8259A状态信息。(3) 在中断响应周期,CPU从中获得中断类型号。返 回读/写逻辑接收CPU送来的读/写控制信号、片选信号以及地址选择信号,以对内部控制逻辑编者编程以确定工作方式。它可将8259A内部的状态信息传送到数据总线上,供CPU读取 .返 回级联缓冲/比较器级联缓冲/比较器在级联方式的主从结构中(两个以上的8259A组成的系统),用来存放和比较

21、系统中各8259A的从设备标志(ID)。返 回控制逻辑控制逻辑是控制8259A内部各部件的主要逻辑电路。主要功能包括:(1) 根据CPU对8259A编程设定的工作方式来产生内部控制信号。(2) 如果中断请求寄存器IRR有未被屏蔽的位,则控制逻辑对应于当时最高优先的中断源,向CPU发中断请求信号INT。(3) 接收CPU送来的中断响应信号,并允许中断服务寄存器ISR的相应位(ISRi)置位。(4) 控制发出相应的中断类型号,通过数据总线缓冲器输出到系统总线上。返 回中断请求寄存器IRRIRR是一个专门用于记录外部中断源的中断申请的8位寄存器。IRR的8个输入端分别可接8个中断源,只要有中断请求即

22、IRR的某端(IRRi)由低电平变高电平时,则相应的IRR位置1(IRRi=1),直到中断服务寄存器相应位置1,IRR相应位才复位。返 回中断优先权分辨器PR优先权分辨器PR用来确定存放在IRR中各个中断请求信号对应中断源的优先级。并总是选出当前最高优先中断源的中断申请通知控制逻辑,以便控制逻辑发送中断请求信号INT。返 回中断服务寄存器ISRISR为用于记录正在被CPU处理(服务)的中断级的8位寄存器。当有中断请求并被CPU响应时,即在CPU响应中断后发来第一个中断响应脉冲时,将对应的中断服务寄存器相应位置1,直到结束中断或有中断结束命令才复位。返 回中断屏蔽寄存器IMRIMR是8位的用于从

23、硬件上屏蔽中断源的寄存器。如果IMR相应位为1,则对应中断源的中断请求被屏蔽。只有相应位为0且IF=1,CPU才有可能响应可屏幕中断。返 回二、引脚信号D7D0为8位双向的数据线INT:中断请求输出信号INTA:中断响应输入信号RD和WR:读/写控制信号CS:片选信号A0:端口选择信号(两个端口地址)IRRi:8个中断源中断请求端SP/EN:级联控制主:=1,从=0返 回三、工作方式优先级的方式屏蔽中断源的方式结束中断处理的方式连接系统总线的方式中断请求信号方式返 回优先级的方式全嵌套方式特殊全嵌套方式优先级自动循环方式优先级特殊循环方式返 回全嵌套方式仅允许高一级中断进入嵌套。从高到低优先级

24、依次为IR0IR1IR2IR3IR4IR5IR6IR7。返 回特殊全嵌套方式允许高一级,也允许同级中断进入嵌套。从高到低优先级依次为IR0IR1IR2IR3IR4IR5IR6IR7。返 回优先级自动循环方式在这种方式下,中断源的优先级是变化的,当一个设备得到中断服务以后,它的优先级自动降为最低优先。在初始状态下的优先级为IR0IR1.IR7,下一次优先级为IR1IR2IR6IR7IR0,依次类推。返 回优先级特殊循环方式与优先级自动循环方式只有一点区别:初始最优者可由程序设定,可任意指定一个初始最高优先级,以后再循环优先。返 回屏蔽中断源的方式普通屏蔽方式:设置8259A内部中断屏蔽寄存器IM

25、R的相应位为1(通过OCW1),即可屏蔽对应中断源的中断申请。特殊屏蔽方式:先写入特殊屏蔽命令字OCW3,然后再写屏蔽命令字OCW1。使当前中断服务寄存器ISR的相应位自动复位。这就只屏蔽了当前正在处理的这级中断。返 回结束中断处理的方式自动结束方式:系统一旦进入中断服务程序,8259A就自动将当前中断服务寄存器相应位清0。(在第二个中断响应脉冲)非自动结束方式:在中断服务程序结束,返回主程序之前发一条中断结束命令,使8259A的当前最高优先级的中断对应的ISR复位。返 回连接系统总线的方式缓冲方式:一般在多片8259A级联系统中,8259A通过总线驱动器与系统总线相连,而不是8259A直接与

26、系统总线相连,这就是缓冲方式。非缓冲方式:当系统只有一片8259A或少量几片8259A时,一般将它直接与数据总线相连。这就是所谓的非缓冲方式。返 回中断请求信号方式边沿触发方式:在边沿触发方式下,8259A将中断请求输入端出现的上升沿作为中断请求信号,且该信号可以一直保持为高电平。为了防止干扰,其高电平也应有一定的宽度。电平触发方式:8259A把中断请求输入端出现的高电平作为中断请求信号。但应注意的是,当中断请求被响应后,输入端必须立即撤消高电平,以免引起再一次中断。返 回四、编程方法一般原则:先进行初始化编程,再进行控制命令编程8259A的初始化编程8259A操作命令字的编程返 回8259A

27、的初始化编程对8259A进行初始化编程就是向8259A写入两到四个初始化命令字。流程如图。初始化编程任务: 设定中断请求信号的有效形式。 设定8259A是单片还是多片级联方式。 设置中断类型号。 设置优先排队规则。 设定中断结束时的操作原则。编程示例:返 回芯片初始化命令字ICW1在写入初始化命令字后,自动启动初始化程序,除完成ICW1格式规定的功能外,隐含的功能有清除IMR(8259A开放所有中断)、默认的中断优先级为IR0IR1.IR7,即自动进入全嵌套方式、清除特殊屏蔽方式、设置读IRR方式。 返 回中断类型初始化命令字ICW2要写入8259A的A0=1的端口T7到T3为决定中断类型号的

28、关键位 D2到D0根据IRi的组合编码置相应的值 返 回如ICW2=01100101B,则IR5(低三位为101)的中断类型号为65H,同样可推算出IR0到IR4的中断类型号为60H到64H,IR6、IR7的中断类型号为66H和67H。主/从片初始化命令字ICW3主片ICW3主要任务就是确定主片8259A的哪个中断输入引脚(IRi)接从片(ICW1的SGNL位=0之后,表明有级联才需要设置ICW3) 要写入8259A的A0=1的端口IRi=1,指示IRRi处接一从片例:如ICW3=01010100B=54H,则说明主片8259的IR2、IR4和IR6接了8259。在PC机中,主片ICW3=04

29、H,即主片的IR2接一个从片 主/从片初始化命令字ICW3从片ICW3要写入8259A的A0=1的端口ID2,ID1,ID0编码决定从片INT接主片的IRRi用三个标识符(ID2ID0)来确定从片中断请求输出端接主片的哪个输入引脚。 返 回例:如从片的ICW3=00000110B,表明从片接主片的IR6(低三位为110)。在PC机中,从片的ICW3=02H,即从片接主片的IR2。 控制初始化命令字ICW4只有在ICW1的最低位IC4设置了1之后,才需要设置ICW4 要写入8259A的A0=1的端口各位含义:PM :CPU类型,0=8080/8085,1=80X86。AEOI:自动结束中断方式,

30、AEOI=1自动中断结束方式。M/S: 主从片选择,1=主片,0=从片。BUF:缓冲方式。BUF=1工作在缓冲方式。SFNM:特殊全嵌套方式。SFNM=1,特殊全嵌套方式。返 回8259A初始化编程实例系统对主片8259A初始化的要求是:(如图所示) 主片的IR2接从片的INT端。 主片中断信号为边沿触发方式。 级联但无缓冲。 起始中断类型号为08H(IR0)。 正常的中断结束,不选择特殊的全嵌套方式。级联方式要ICW3和ICW4。对从片8259A的要求是: 从片的INT接主片的IR2。 从片起始中断类型号为70H。 级联方式要ICW3和ICW4。实例系统图返 回典型微机系统中的主/从8259

31、 返 回编程实例解(主片)主片初始化程序段:MOV AL,00010001B;ICW1:边沿,ICW4,ICW3OUT 20H, AL ;写入ICW1MOV AL, 00001000B ;ICW2:IR0中断类型号为08HOUT 21H, AL ;写入ICW2MOV AL, 00000100B ;ICW3:主片IR2接从片INTOUT 21H, AL ;写入ICW3MOV AL, 00000101B ;ICW4:非缓冲,正常中断结束,非特殊全嵌套方式OUT 21H, AL ;写入ICW4返 回编程实例解(从片)从片初始化程序段:MOV AL,00010001B ;ICW1:边沿,ICW4,IC

32、W3OUT 0A0H, AL ;写入ICW1MOV AL, 01110000B ;ICW2:IR0中断类型号为70HOUT 0A1H, AL ;写入ICW2 MOV AL, 00000010B ;ICW3:从片接主片的IR2OUT 0A1H, AL ;写入ICW3MOV AL, 00000001B ;ICW4:非缓冲,正常结束, 非特殊全嵌套方式OUT 0A1H, AL ;写入ICW4返 回8259A操作命令字的编程中断屏蔽命令字OCW1控制中断和优先级循环的操作命令字OCW2屏蔽查询状态命令字OCW3中断屏蔽命令字OCW1 向中断屏蔽寄存器IMR写入屏蔽信息 Mi=1表示对应的IRi中断源被

33、屏蔽,Mi=0则取消屏蔽(i=0,1,2,3,4,5,6,7)。要求写入8259A的A0=1的端口控制中断和优先级循环的操作命令字OCW2 控制中断结束以及确定优先级循环方式 R :优先级循环位,R=1为循环优先。SL:指定IRi级别位.SL=1时L2L0有效。L2L0:编码指定IRRiEOI=1则表示中断结束命令,EOI=0则不起作用。要求写入8259A的A0=0的端口,D4D3=00为OCW2的标识符 R,SL及EOI的组合功能 屏蔽查询状态命令字OCW3 管理特殊的屏蔽方式和查询方式并可以用该命令字读取8259A状态寄存器中的内容。 ESMM:特殊屏蔽允许,SMM :特殊屏蔽位。P:管理

34、查询方式:当P=1时可用作查询方式, P=0为非查询方式。 RR=1读寄存器IRR和ISR,RR=0禁止读这两个寄存器的内容。RIS:寄存器选择位,RR=1时且RIS=0读IRR寄存器,RIS=1读ISR寄存器的内容。 要写入8259A的A0=0的端口,D4D3=01为OCW3的标识位 状态寄存器说明当ESMM=1且SMM=1时:只要微处理器内部IF位为1,系统就可以响应任何可屏蔽中断请求,此时就象优先级规则不起作用一样,而当再一次写入OCW3使ESMM=1且SMM=0时,系统又恢复原来的优先级方式。P 管理查询方式:当P=1时可用作查询方式,即查询决定优先级次序;P=0为非查询方式。P=1时

35、用作查询命令,下一条对同一地址(8259的A0=0)的读指令(IN)起中断识别作用。具体操作是:如果当时有中断请求,将识别出优先级最高的请求,把ISR相应位置1,同时传输一个字节的信息进入微处理器的AL中,该字节的格式如下:I=1表示有中断请求,I=0表示没有中断请求,I=1时W2、W1和W0才有意义,它们指示请求中断的最高优先级。 D7D6D5D4D3D2D1D0IW2W1W0操作命令编程实例MOV AL, 11110000B ;主片OCW1,屏蔽主片的IR7,IR6,IR5和IR4OUT 21H, AL ;写入主片的OCW1 MOV AL, 10000001B ;从片OCW1:屏蔽从片82

36、59A的IR0和IR7OUT 0A1H, AL ;写入从片的OCW1MOV AL, 00100000B ;OCW2:结束最高中断,清ISR相应位,发普通中断结束命令OUT 0A0H, AL ;先向从片发中断结束命令OUT 20H, AL ;后向主片发中断结束命8259A状态的读取中断屏蔽寄存器IMR的读取读取IMR只需用一条IN指令IN AL, 21H;A0=1的偶地址端口中断请求寄存器IRR的读取MOV AL, 0AH;发读取IRR的OCW3命令字 OUT 20H, AL ;写入A=0的偶地址端口IN AL, 20H;读IRR内容到AL中中断服务寄存器ISR的读取MOV AL, 0BH ;发

37、读取ISR的OCW3命令字 OUT 20H, AL ;命令字写入A0=0的端口IN AL,20H ;读ISR内容到AL中高级中断控制器 不同的处理器采用不同的中断控制器8086/80286:使用8259A80386/80486:使用82380P5以后使用不同的南桥芯片(内含中断控制器)例:在815EP(支持PIII)芯片组中的南桥芯片82801BA(B,C,D,E,F,H),在865EP(支持P4)南桥芯片82801EB就集成了两个级联的8259A提供15级中断向量。(ICH2-ICH5)(MCH)所有的高级中断控制器在地址和控制字符方面都与8259A兼容。高级可编程中断控制器APIC 从Pe

38、ntium开始,引入了高级可编程中断控制器APIC(Advanced Programmable Interrupt Controller)。APIC主要是面向多处理器环境的,它可以发送一个中断到一个或一组处理器,并可动态执行优先权判决。APIC保持与8259的兼容性。典型的APIC主要由Local APIC、I/O APIC及APIC总线三部分构成。支持24个可编程源,其中包括13个ISA中断、4个PCI中断、1个(系统管理)中断、两个主板中断、1个INTR(可屏蔽中断)以及3个通用中断。 APIC系统的工作过程分为三个阶段请求递交阶段:由于中断类型号共有256个(0255),015保留,因此

39、APIC只使用16255中断类型。当I/O APIC模块的中断输入引脚INTINi(i=023)收到有效的电平触发信号后,则使中断请求寄存器的相应位IRRi置位,然后启动一个APIC总线消息传输周期,将此系统中断请求的有关信息传递给指定处理器的Local APIC模块处理。中断优先权判断阶段:收到中断请求后,Local APIC模块将当前最高优先的中断请求交给处理器核心进行处理。此时同8259的工作过程类似,得到中断类型后,将中断服务寄存器中的相应位ISRi置位,同时清除IRRi位。通过中断类型号从中断向量表或中断描述符表中找出相应的中断服务程序入口地址,从而执行相应服务程序。中断结束阶段:在

40、中断返回之前,向Local APIC模块发中断结束命令(EOI),这样使当前最高优先的ISRi复位。 Intel 965芯片组中断调用及中断程序设计版权所有, 南京航空航天大学 计算机科学与工程系讨论中断控制的程序设计方法 理解中断调用指令的执行过程INT n指令IRET指令INT n指令的执行过程(1)SP=SP-2(2)PSW (FLAGS) 入栈(3)SP=SP-2(4)断点地址(INT n 的下一条指令)的CS入栈(5)SP=SP-2(6)断点地址的IP入栈(7)IP=0000:n*4(8)CS=0000:n*4+2IRET 指令的执行过程(1)IP=SS:SP(2)SP=SP+2(3

41、)CS=SS:SP(4)SP=SP+2(6)PSW=SS:SP (7)SP=SP+2中断调用BIOS功能调用供助于存于系统板ROM中的BIOS程序实现功能调用,它是最直接控制硬件的系统程序,是其它程序(OS,用户程序等)与硬件的接口程序。DOS功能调用(类型码20H3FH )供助于DOS操作系统提供的处理程序实现功能调用。BIOS中断调用BIOS中断类型BIOS调用方法BIOS调用示例BIOS中断类型返 回BIOS调用方法在AH寄存器中设置调用子程序的功能号根据要求设置入口参数使用INT n指令转入BIOS程序入口,其中n为中断类型号程序运行完毕后,如果有出口参数,则按规定取得出口参数返 回B

42、IOS调用示例显示功能日期和时间键盘服务返 回BIOS显示功能调用10H示例在当前光标处显示一个字符$,光标自动后移,功能号AH=0EH入口参数:要显示的字符在AL中调用方法:MOV AH,0EH MOV AL,$ INT 10H利用BIOS日期调用读取日期读系统日期,功能号04H入口参数:无出口参数:CX=年(带世纪),DH=月,DL=日调用方法:MOV AH,04 INT 1AH利用BIOS日期调用设置日期读系统日期,功能号05H入口参数:CX=年(带世纪),DH=月,DL=日出口参数:无调用方法: MOV CX,2002H ;2002年 MOV DX,0512H ;5月12日 MOV A

43、H,05 INT 1AH利用BIOS时间调用读取时间读系统时间,功能号02H入口参数:无出口参数:CH=时,CL=分,DH=秒调用方法:MOV AH,02 INT 1AH利用BIOS时间调用设置时间读系统时间,功能号03H入口参数:CH=时,CL=分,DH=秒出口参数:无调用方法: MOV AH,03 MOV CX,1209H ;12:09 MOV DH,0 INT 1AHBIOS键盘服务调用16H示例从键盘缓冲区读取字符入口参数:AH=1出口参数:ZF=0,AH=键盘扫描码, AL=ACII码字符ZF=1,无键按下调用方法:MOV AH,1 INT 16HDOS中断调用DOS中断类型DOS调

44、用方法DOS调用示例DOS中断类型(20H3FH)DOS调用方法同BIOSDOS系统功能调用指的是,使用INT 21H软中断所完成的各项功能,这些功能共有80多种,大致可分为设备管理、文件管理和目录管理等几种类型,调用方法如下: 1.在AH寄存器中设置调用子程序的功能号2.根据要求设置入口参数3.使用INT 21H指令转入DOS程序入口4.程序运行完毕后,如果有出口参数,则按规定取得出口参数DOS中断调用21H示例显示功能日期和时间键盘服务DOS显示功能调用示例在当前光标处显示一个字符$,光标自动后移,功能号AH=02H入口参数:要显示的字符在DL中调用方法:MOV AH,02H MOV DL

45、,$ INT 21H与BIOS功能两点不同:一是中断类型号和功能号不同,二是要显示的字符存放寄存器不同利用DOS日期调用2AH读取日期读系统日期,功能号2AH入口参数:无出口参数:CX=年(带世纪),DH=月,DL=日,AL=星期(0-星期一,.)调用方法:MOV AH,2AH INT 21H利用DOS日期调用2BH设置日期读系统日期,功能号2BH入口参数:CX=年(带世纪),DH=月,DL=日出口参数:成功,AL=0;失败,AL=0FFH调用方法: MOV CX,2010H ;2002年 MOV DX,0321H ;3月21日 MOV AH,2BH INT 21HDOS键盘服务调用示例从键盘

46、读字符并回示入口参数:AH=1出口参数:AL=ACII码字符调用方法:MOV AH,1 INT 21H中断程序设计的任务加载程序:1.设置中断向量2.初始化中断控制器3.利用DOS功能调用驻留中断服务程序中断服务程序设计:1.保护现场,将相关寄存器的内容压入堆栈中;2.用户中断处理程序,若在此期间允许中断嵌套,则应该事先执行开中断指令,并在中断处理程序执行完毕后执行关中断指令,以免影响恢复现场操作;3.恢复现场,发中断结束命令(EOI)4.中断返回(若为独立的中断程序,直接用IRET指令返回;若是扩充原中断服务程序的功能,可用段间无条件转移指令转移到原中断服务程序的入口)。 中断向量设置直接装

47、入方法直接利用中断向量与存放地址关系存入内存,例如:使用数据传送指令或串操作指令把用户的中断服务程序入口地址填入向量表中的适当单元。 利用DOS中断装入方法INT21H入口:AH=25,AL=中断类型号,DS:DX=中断向量,出口:无利用DOS中断读取中断向量INT21H 入口:AH=35,AL=中断类型号;出口:ES:BX=中断向量直接装入中断向量方法 XOR AX,AX MOV EX,AX ;指向0段 MOV DI,60H*4;类型号60H MOV AX,OFFSET INTRS;取偏移地址 MOV ES:DI,AX ;写入向量表 MOV AX,SEG INTRS ;取段地址 MOV ES:DI+2,AX ;写入向量表 INTRS:. . IRET返 回利用DOS中断装入中断向量方法 MOV BX,SEG INTRS ;取段地址 MOV DS,BX MOV DX,OFFSET INTRS;取偏移地址 MOV AL,60H ; 60H为中断类型 MOV AH,25H INT 21H INTRS:. . IRET返 回见P418利用DOS中断获取中断向量方法 MOV A

温馨提示

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

评论

0/150

提交评论