微机原理与接口技术第八章中断系统课件_第1页
微机原理与接口技术第八章中断系统课件_第2页
微机原理与接口技术第八章中断系统课件_第3页
微机原理与接口技术第八章中断系统课件_第4页
微机原理与接口技术第八章中断系统课件_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

1、第八章 中断系统微机原理与接口技术杜秀川8.1 中断的基本概念中断是CPU和外部设备交换数据的一种方式。当CPU正常运行程序时,用户通过某种方式向CPU请求为自己服务,CPU接收请求暂时中断正在运行的程序,转去执行直接为用户服务的服务程序,执行完毕后再返回被中断的程序。这一过程被称为中断。 中断的作用并行操作,提高工作效率实现实时处理及时处理紧急情况(如故障等)中断源能够导致CPU产生中断的来源硬中断源 (外中断) 由外部请求引起的中断软中断源 由指令执行引起的中断中断源(1)一般的输入输出设备 (INTR)键盘,打印机,鼠标等。(2)数据通道中断源 (INTR)软盘,硬盘等。(3)实时时钟

2、(INTR)用外部时钟定时发出中断信号,由CPU进行处理。(4)故障源 (NMI)(a)外设故障电源掉电,运行超限等。(b)计算机故障内存出错,输入输出出错等。(5)测试程序时设置的中断源硬件断点:硬件调试器软件断点:INT 03H调试程序应支持单步运行和断点运行开中断和关中断不同的中断源又可以分为条件中断和无条件中断。无条件中断源的申请,CPU一定要响应 (软中断都属于无条件中断)条件中断要求CPU处于开中断状态才响应中断,在关中断状态则不响应IF=1开中断状态IF=0关中断状态通过中断标志IF的置位/复位来控制CPU的开/关中断状态。例如:8086CPU硬中断的非屏蔽中断是无条件中断,硬中

3、断的可屏蔽中断是条件中断。有时CPU根据自己的工作状态会切换系统的开关中断状态 中断优先级中断优先级 (原因)可以有序处理多个中断源对CPU的同时申请, CPU优先处理优先级高的中断;可以允许中断嵌套。中断嵌套的规则:对于大多数系统,只有高优先级的中断源可以打断低优先级中断的服务;低级中断,或者同级中断原则上是不能要求中断嵌套的。中断源的优先级是默认确定的对于用户和开发人员,需要确定和处理实际外中断源的优先级。 中断优先级排队软件查询实现优点是接口简单、编程简单、应用面广缺点是不够灵活中断优先级排队中断服务程序首先读入锁存器的内容,然后对于读入的内容从D7(对应高优先级)到D0(对应低优先级)

4、进行查询。如果查到某一位是高电平(有申请)就跳转到相应的服务程序进行处理。处理完毕后返回来继续查询,直到查询完毕,退出服务程序。相应的程序段如下:INAL, PORT_R; PORT_R是锁存器地址CLCRCRAL, 1JCINTS01; 转向故障处理A1:RCRAL, 1JCINTS02; 转向告警处理A2:INTS01:JMPA1INTS02:JMPA2中断优先级排队硬件优先权排队电路步骤 :外部中断向CPU申请中断 CPU给出中断应答信号排队电路选择最高级别的中断,产生相应的三态锁存器的选通信号,将存放在锁存器中的中断源标识传送到CPU的数据总线CPU读入中断源的标识,调用相应的中断服务

5、程序 中断优先级排队硬件优先权排队电路优点是中断响应快,使用灵活;缺点是接口电路比较复杂 每个中断源需要有中断类型号来标识自己中断类型号和中断服务程序一一对应 8086由中断类型号*4得到中断向量表中的地址,该地址存储有中断服务程序的入口地址 中断向量表中断向量表是系统RAM或者系统ROM的一个区域 ,向量表的大小取决于CPU支持的中断类型和数量。 类型:指令型的中断向量表 ,一般位于系统的ROM区域(修改比较困难),存放的是一条转移指令 。向量中断 ,一般位于系统的RAM区域(使用比较灵活),存放的是中断向量。中断向量是中断服务程序的入口地址。中断向量表 指令型中断向量表 中断类型号中断类型

6、号矢量中断的中断向量表中断过程中断申请除软中断外,外部设备向CPU发送的中断请求信号(电平信号或脉冲信号)需要注意外部设备发出的请求信号和CPU的要求是否一致。如果不一致,就要通过接口电路来解决。中断判优(判别中断源的优先级) 若符合中断条件和优先权,CPU接受中断请求,进入中断响应阶段 中断过程中断响应保存断点地址(一般采用堆栈,有的采用寄存器) 利用中断向量表将指令指针指向中断服务程序入口在中断响应里,要完成断点保存、标志寄存器保存、关中断等,部分操作由CPU自动完成,用户也需要完成一些操作。中断服务执行中断服务程序中断返回返回到正常程序的断点8.2 8086中断系统8086的中断源256

7、个不同的中断,中断类型号的取值是00HFFH 中断分为软中断和硬中断,硬中断又分为非屏蔽中断和可屏蔽中断 非屏蔽中断的请求从NMI引脚输入。可屏蔽中断的请求从INTR引脚输入 软中断是通过指令 INT n 其中的 n 可以是 0 255。如DOS中断调用就是 INT 21H。对于 n 为0 4的5种软中断是属于8086的专用中断,它们的功能是固定的。其余的中断类型号既可以分配给软中断使用,也可以分配给可屏蔽中断使用。中断类型号04中断类型号用途对应的指令说明0除法溢出无使用DIV或者IDIV指令时,如果除数为0,或者商的值超过了寄存器可以存放的范围就自动启动 1单步中断无通过TF=1来启动,用

8、于调试程序2非屏蔽中断无保留给外部的非屏蔽中断请求。所有非屏蔽中断源都触发一个中断服务程序,需要通过查询方式来分别处理 3断点中断INT 3单字节指令,程序执行到断点处会停下,显示所有寄存器的值。也可进行其他调试。4溢出中断INTO单字节指令,更好的处理运算溢出的问题。运算后如果有溢出,不会自行启动溢出中断,必须通过INTO指令。;修改TF标志的指令PUSHFPOPAXORAX,0100HPUSHAXPOPF;INTO指令检查运算是否溢出MOV AX,n1ADD AX,n2INTOMOV SI,AX8086的中断源只有可屏蔽中断是条件中断,必须CPU在开中断状态下才可以响应 存在多个中断源,先

9、响应高优先级的中断源。中断源的优先级固定:除法溢出中断INT n INTO NMIINTR 单步中断(最低)外中断源的优先级问题由中断接口电路来处理。 可屏蔽中断的中断周期8086收到INTR引脚上的申请后,如果CPU处于开中断状态,则响应可屏蔽中断,要进入中断响应周期。中断响应周期需要两个总线周期,共8个T状态 其他类型的中断,不进入中断响应周期,也不需要外设传送中断类型号 8086的中断向量表8086的中断向量表存储向量中断,即中断服务程序的入口地址,位于存储器的03FFH地址,共1024字节。为256个中断类型号每个分配4字节。中断服务程序都是远调用,所以要存储入口的偏移地址和段地址。低

10、2个字节(n4)是中断入口的IP ,高2个字节(n4+2)是中断入口的CS。8086的中断向量表例8-1 如果在DEBUG环境中观察到8086中断向量表(部分)的内容如下:0000:0000 9E 0F C9 00 FF 13 F4 0C-16 00 44 09 F5 13 F4 0C0000:0010 65 04 70 00 54 FF 00 F0-40 E1 00 F0 6F EF 00 F00000:0020 00 00 00 CC 28 00 44 09-3A 00 44 09 52 00 44 090000:0030 6A 00 44 09 82 00 44 09-9A 00 44

11、09 65 04 70 00试问中断类型号n=4的中断服务程序入口地址是什么?解:先计算查找中断向量表的位置:44 = 16 = 10H 读出中断入口的偏移地址是0465H;44+2 = 18 =12H 读出中断入口的段地址是0070H;所以,从这个向量表查到的4号中断服务程序的入口地址是:0070H10H+0465H = 00B65HCPU负责从中断向量表读出中断矢量。而用户需要将中断服务程序的入口地址写入中断向量表。 答案8086的中断向量表写入中断向量表的方法(1)直接写入法:使用指令将中断服务程序入口地址的IP写入n4的RAM位置,中断服务程序入口的CS写入n4+2的位置。例8-2 若

12、中断类型号n=70H,中断服务程序的过程名是INTSUB。借助伪指令和传送指令,将中断服务程序入口地址写入中断向量表。; 数据段确定中断向量表写入的位置:VECDATASEGMENT AT 0ORG70H*4LOCA_70 DW2 DUP (?)VECDATAENDS; 代码段写入中断向量表:ININTSEGMENTMOVLOCA_70, OFFSET INTSUBMOVLOCA_70+2, SEG INTSUB答案8086的中断向量表写入中断向量表的方法(1)直接写入法例8-3 不借助伪指令,直接用指令将中断服务程序INTSUB的入口地址写入中断向量表,中断类型号仍然是70H。解:为不影响D

13、S,在程序段中使用了ES寄存器。先将ES的值置为0;在使用MOV指令时通过段超越,指定使用ES的值为段地址。 XOR AX, AXMOV ES, AX; 段地址为0MOV BX, 70H*4; 中断类型号4MOV AX, OFFSET INTSUB; 中断服务程序的偏移地址MOV ES:BX, AXMOV AX, SEG INTSUB; 中断服务程序的段地址MOV ES:BX+2, AX答案8086的中断向量表写入中断向量表的方法(2)利用DOS功能调用写、读中断向量表 DOS功能调用25H用来写中断向量表(AH=25H)。入口参数:AL:中断类型号;DS:中断服务程序入口的段地址;DX:中断

14、服务程序入口的偏移地址。DOS功能调用35H用来读中断向量表(AH=35H),入口出口参数:AL:中断类型号;ES:读出的中断服务程序入口的段地址;BX:读出的中断服务程序入口的偏移地址。例8-4 设中断类型号为70H,中断服务程序是INTSUB,用DOS功能调用25H将中断服务程序入口地址写入中断向量表。PUSH DSMOV AX, SEG INTSUBMOV DS, AXLEA DX, INTSUBMOV AL, 70HMOV AH, 25HINT 21HPOP DS答案8086的中断过程8086中断过程的特点:(1)中断申请(包括NMI、INTR)都是高电平有效,高电平延续的时间不能小于

15、2个CPU的时钟周期。且中断返回前必须结束。(2)中断响应,是8086在执行完当前指令后才开始,软中断和NMI中断,直接提取中断类型号。而对于INTR中断,要进入中断响应周期,读取外设发送过来的中断类型号。8086CPU按默认的中断优先级查询,但多个INTR中断同时申请的排队问题由中断接口电路来解决。 8086获取了中断类型号以后,进行 :标志寄存器的值入堆栈标志IF和TF清零,即中断服务程序CPU处于关中断状态断点的CS和IP入堆栈根据中断类型号查中断向量表,将中断服务程序入口地址写入CS和IP 开始执行中断服务程序 8086的中断过程8086响应中断的过程 TF=08086的中断过程808

16、6中断过程的特点:(3)中断服务 ,服务子程序和一般的子程序基本相同,不同点:中断服务程序都是远过程,要用“PROC FAR”标志寄存器入堆栈保护,一般的子程序要用PUSHF中断接口电路可能要求在中断服务程序结束时向接口电路发送一条“结束中断”的命令中断返回指令是IRET,一般的子程序用RET。中断服务程序时CPU是关中断状态,若允许中断嵌套,则在中断服务程序的开始写一条开中断指令:STI。 (4)中断返回,使用IRET指令IRET指令的具体操作是:IP(SP), SPSP+2CS(SP),SP SP+2F(SP),SPSP+2 8.3 可编程中断控制器8259A及其应用8259A是可编程中断

17、控制器,用于多个INTR中断源的中断接口电路,但不适合NMI中断源。 8259A中断控制器的基本功能:单片8259可以连接8个中断源,多片8259连接后,可以连接多达64个中断源。可以灵活设置中断源的中断类型号,在中断响应周期向8086发送该中断类型号。 能管理中断源的优先级,并有固定优先级(自动嵌套方式)和循环优先级(相等优先级)的排队方式可以设置中断源的中断请求(触发)方式:电平方式或脉冲方式。8259A可以把中断源的脉冲信号申请转变为电平信号而接入到8086。 8259A中断控制器的引脚28个引脚D7D0:数据线,双向三态 IR7IR0:8个外中断申请输入 INT:向CPU的中断请求输出

18、 INTA:来自CPU的中断响应输入CS:片选信号RD:读控制信号输入 WR:写控制信号输入 CAS2CAS0:多片8259A之间的级联信号线,同名的CAS线互连 SP/EN:双向,输出作为缓冲允许信号 EN;输入作为主从定位信号 SP。A0:输入,决定8259A内部端口的寻址 8259A的基本结构中断请求寄存器(IRR) 中断服务寄存器(ISR) 优先级分析器(PR) 中断屏蔽寄存器(IMR) 8259A的基本结构中断请求寄存器(IRR),保存还没有得到处理的外部中断源的申请 中断服务寄存器(ISR),登记哪些中断源的申请正在被CPU响应 优先级分析器(PR),判定多个中断源申请的最高优先级

19、,在ISR寄存器的相应位置1,为该中断源服务 中断屏蔽寄存器(IMR),共有8位,每一位控制一个外部中断源申请。当某一位为“1”时,相应的中断源的申请就被屏蔽,不能进入IRR寄存器进行登记。 8259A的基本结构8259A的基本工作过程 :外部设备将中断申请信号加入到IR7IR0; 若中断屏蔽寄存器IMR对于加入的中断申请没有屏蔽,中断申请存入IRR寄存器;优先级分析器对中断申请进行优先权分析,对于最高优先级的申请,清除它在IRR寄存器的登记,向CPU发出中断申请; CPU响应中断,发回INTA应答信号,在收到8086CPU发来的第一个INTA信号时,在ISR寄存器的相应位置1,并且向CPU发

20、送中断类型号,在收到第二个INTA时,如果不是设置为非自动结束中断,8259A清除相应的中断在ISR寄存器中的登记; CPU调用中断服务程序,进入中断服务,在中断服务程序的最后,如果8259A设置为非自动结束中断,向8259A发送结束中断命令,收到该命令后,8259A清除ISR寄存器中相应位的“1”,一次中断过程结束。8.3.4 8259A的工作方式1确定中断类型号的方式8259A规定8个中断类型号的高5位是相同的,只有低3位不同。低3位的值和中断输入引脚的编号相一致。IR0输入的中断源 中断类型号低3位:“000”IR7输入的中断源 中断类型号低3位:“111” 8个中断源的中断类型号一定是

21、连续的。 例如:中断类型号的高5位是“01001” ,IR0IR7的8个中断源的中断类型号 :48H4FH中断类型号的高5位是“01010” ,IR0IR7的8个中断源的中断类型号 :50H57H 8.3.4 8259A的工作方式2. 中断结束方式中断服务寄存器ISR登记正在进行处理的中断,若复位在ISR寄存器中的登记,表明一次中断服务的结束。两种清除ISR寄存器中的登记,即两种中断结束方式: (1)自动结束中断8259A在CPU发送第二个INTA应答信号的后沿,自动清除对于被响应的中断在ISR寄存器中的登记,也就是把登记的“1”复位为“0”。完全由8259A自动完成,不需要用户的操作。但与中

22、断服务的实际并不符合。因为在第二个INTA发送后,CPU才开始执行中断服务程序。而8259A已认为中断服务已经结束,开始接受申请一次新的中断过程。同级中断也可以被打断,不符合一般的中断优先级管理原则。 实际的应用中自动结束中断方式并不经常使用。8.3.4 8259A的工作方式2. 中断结束方式(2)非自动结束中断 要求在中断服务程序结束前,通过指令向8259A发送一个结束中断的命令,称为“EOI”命令。8259A收到这个命令后,才会清除正在服务的中断在ISR寄存器中的登记。这种结束中断方式,可以保持ISR寄存器中的状态和实际中断服务的状态相一致:只有中断服务结束,ISR寄存器中的相应登记才被复

23、位。实际的应用中经常使用该方式。“EOI”命令就是8259A的一种操作命令字,在编程方式里详述。8.3.4 8259A的工作方式3优先权管理方式8259A的中断优先权的管理有两种方式、三种具体的做法:(1)全嵌套方式即固定优先级方式,按照引脚分配优先级,IR0的中断源优先级最高,IR7的中断源优先级最低。 用户只需将重要的中断连接到高优先级的引脚,不太重要的中断接入到低优先级的引脚 。8.3.4 8259A的工作方式3优先权管理方式(2)特殊全嵌套方式(多片8259A级联时)每片8259A仍然是固定优先级的方式,但允许同级中断的嵌套。连接到CPU的称为主8259A,连接到主8259A的是从82

24、59A。 特殊全嵌套方式只用在主8259A的优先级管理,从8259A还是要使用一般全嵌套方式。 8.3.4 8259A的工作方式3优先权管理方式(3)循环优先级方式 一种非固定优先级方式,。初始时,仍是IR0连接的中断源优先级最高,IR7连接的中断源的优先级最低。 一旦某个中断请求被响应了,这个中断输入对应的优先级就降到最低,原来比这个输入低一级的输入的优先级升位最高,其余各个输入对应的优先级仍然依次排列。例如,IR5的输入请求被响应了,IR5输入的优先级降为最低,原来低一级的输入IR6的优先级上升为最高,其余依次排列,从最高到最低的排列:IR6IR7IR0IR1IR2IR3IR4IR5 出发

25、点就是平等优先级,若外中断源在重要性上没有多大差别,可采用这种优先级管理方式 8.3.4 8259A的工作方式4中断屏蔽方式中断屏蔽就是对某些中断申请加以屏蔽,不容许它们在IRR寄存器登记,即不能通过8259A向CPU发出申请。(1)一般屏蔽方式通过中断屏蔽寄存器IMR的设置,可以屏蔽一些干扰信号的错误输入;通常高优先级中断对低优先级中断具有屏蔽作用。(2)特殊屏蔽方式设置高优先级的中断不对低级中断产生屏蔽,即不考虑各中断源之间的优先级关系,是一种非正常的中断优先级排队关系。应用系统中很少使用。 8.3.4 8259A的工作方式58259A和系统数据总线连接的方式(两种)(1)非缓冲方式825

26、9A的数据线直接和系统的数据总线相连接。一般应用场合都可以使用这种连接方式。SP/EN只作为输入信号来标识8259A是主(高电平)还是从(低电平),8.3.4 8259A的工作方式58259A和系统数据总线连接的方式(两种)(2)缓冲方式8259A的数据线通过数据缓冲器和系统的数据总线相连。数据缓冲器的选通端连接到8259A的SP/EN引脚。 SP/EN引脚的功能是EN,即输出数据缓冲器的选通信号,在需要进行数据传输的时候,打开所连接的数据缓冲器。8.3.5 8259A的编程8259A是CPU控制的可编程中断控制器; CPU传送给8259A的控制命令有:初始化命令字和操作命令字。 18259A

27、的初始化命令字4个初始化命令字:ICW1ICW4 ,分别写到8259A不同的端口。(1)ICW1写入端口:A0=0;设置中断触发方式,规定初始化过程是否需要ICW3/ICW4 A0=0、D4位为1是ICW1的特征若写入符合该特征的命令字,则开始新的初始化8.3.5 8259A的编程18259A的初始化命令字(2)ICW2 写入端口:A0=1功能:写入8个中断源的中断类型号的高5位。ICW2紧随着ICW1,是必须写入的初始化命令字。ICW2的高5位决定了8个中断源中断类型号的高5位。IR0IR7输入的中断源中断类型号的低3位分别是000111。8.3.5 8259A的编程18259A的初始化命令

28、字(3)ICW3 写入端口:A0=1功能:在多片8259A的系统中,说明主、从8259A之间的连接关系。对于主8259A和从8259A的ICW3具有不同的格式。8.3.5 8259A的编程18259A的初始化命令字(4)ICW4 写入端口:A0=1功能:设置8259A的中断结束方式等。在非缓冲方式下,通过硬件连接,决定主/从8259A。在缓冲方式下,通过初始化过程的ICW4,确定主/从8259A。 8.3.5 8259A的编程18259A的初始化命令字(5)8259A初始化过程的选择初始化至少写入两个:ICW1和ICW2 只有在单片8259,并且是8080/8085CPU的系统,且中断结束方式

29、只能使用“非自动结束中断” ,才可以只写入ICW1和ICW2。写入3个命令字:ICW1、ICW2、ICW3或ICW1、ICW2、ICW4。若是8088/8086CPU,又是多片8259A,就一定要使用4个命令字,而且主8259A和从8259A要分别初始化。8.3.5 8259A的编程28259A的操作命令字初始化过程结束后写入的命令字都是操作命令字。操作命令字写入的次数和时间顺序都没有限定。有3个操作命令字:OCW1、OCW2和OCW3。 (1)OCW1命令字写入端口:A0=1功能:设置中断屏蔽寄存器。在中断处理过程中,8个中断输入是否被屏蔽是需要经常变化的。所以OCW1经常需要写入到8259

30、A。 8.3.5 8259A的编程28259A的操作命令字(2)OCW2命令字 写入端口:A0=0功能:设置中断优先级管理方式,向8259A发送中断结束字(EOI)。RSLEOI功能说明001一般EOI命令结束当前中断011特殊EOI命令如01100110,结束IR6的中断100优先级循环方式开始按循环方式管理优先权110特殊优先级循环方式如11000110,IR6为最低级开始循环方式000恢复全嵌套方式取消循环方式8.3.5 8259A的编程28259A的操作命令字(3)OCW3命令字 写入端口:A0=0主要功能:确定下一次读出是IRR/ISR中哪个寄存器。通过D2来设置为查询方式很少使用。

31、一般读8259A的IMR、IRR和ISR寄存器时:通过A0=1的端口,发送一条“IN”指令,就可以读IMR寄存器内容。通过A0=0的端口,发送“IN”指令,可以读IRR和ISR寄存器。为了区分,可以在发送“IN”指令前先发送一条OCW3给8259A,通过OCW3的D1和D0决定下一次要读的寄存器是哪一个。 8259A初始化编程举例例8-5 2片8259级联,从片的INT接主片的IR2。端口地址:主片20H、21H,从片A0H、A1H。主片和从片均采用边沿触发。主片采用特殊全嵌套方式,从片是一般全嵌套方式。采用非缓冲方式,主片接+5V,从片接地。主片的中断类型号为08H0FH,从片的中断类型号为

32、70H77H。写出主8259A和从8259A的初始化程序段。主片的IR2接从片8259A初始化编程举例例8-5解:ICW1A EQU 20H ;主片端口地址ICW2A EQU ICW1A+1ICW3A EQU ICW2AICW4A EQU ICW2AICW1B EQU 0A0H ;从片端口地址ICW2B EQU ICW1B+1ICW3B EQU ICW2BICW4B EQU ICW2B;- 主片8259A-MOV AL,11H ;ICW1,边沿触发,多片,需ICW4OUT ICW1A,ALMOV AL,08H ;ICW2,中断类型码OUT ICW2A,ALMOV AL,04H ;ICW3,IR

33、2接从片OUT ICW3A,ALMOV AL,11H ;ICW4,非缓冲,特殊全嵌套,非自动结束OUT ICW4A,AL答案8259A初始化编程举例例8-5解(续);- 从片8259A-MOV AL,11H ;ICW1,边沿触发,多片,需ICW4OUT ICW1B,ALMOV AL,70H ;ICW2,中断类型码OUT ICW2B,ALMOV AL,02H ;ICW3,INT接主片的IR2OUT ICW3B,ALMOV AL,01H ;ICW4,非缓冲,全嵌套,非自动结束OUT ICW4B,AL答案中断应用程序举例改写一个DOS系统调用除法溢出中断(0号中断)。系统已经为除法溢出中断提供了相应

34、的中断服务程序。当除法溢出时,中断服务程序会给出错误信息:“Divide overflow”。但是服务程序太简单,不能解决除法溢出的全部问题。对于8086CPU除法溢出有两种情况:除数为0,这是真正的溢出。商超过了商寄存器(AL或AX)可以存放的最大值。现在的除法溢出中断服务程序把两种情况混为一谈,都按溢出处理,并不是最好的解决办法。例8-6 改写除法溢出的中断服务程序,能够分别处理除法溢出的两种情况:当除数为0时,给出错误信息;如果不是除数等于0,计算出实际的商和余数,并通过子程序的出口参数来传递。中断应用程序举例解:改写系统的软中断服务程序。做法是:(1)先将原来中断向量表中的中断向量读出

35、并保存起来,再改写中断向量表,写入新的0号中断服务程序的入口地址。(2)在整个程序运行结束前,再将保存的原来的中断向量重新写入中断向量表,恢复系统原有的状态。返回地址问题:不能采用执行“IRET”指令后返回断点。因为除法溢出调用中断服务程序压入堆栈的返回地址不是产生溢出的除法指令的下一条指令的地址,而是除法指令本身的地址。解决方法:在除法溢出中断服务程序中调整断点的地址。由于除法指令的长度是2个字节,就从堆栈中弹出返回地址,加2以后,再重新压入堆栈。答案练习1 、如设备D1,D2,D3,D4,D5是按优先级次序排列的,设备D1的优先级最高。而中断请求的次序如下所示,请给出各设备的中断处理程序的

36、运行次序。假设所有的中断处理程序开始后就有STI指令。1) 设备3和4同时发出中断请求2) 在设备3的中断处理程序完成之前,设备2发出中断请求3) 在设备4 的中断处理程序未发出中断结束命令(EOI)之前,设备5发出中断请求4) 以上所有中断处理程序完成并返回主程序,设备1,3,5同时发出中断请求答:D3D2D3D4D5D1D3D52、在上例中假设所有的中断处理程序中都没有STI指令,而它们的IRET指令都可以由于FLAGS出栈而使IF置1,则各设备的中断处理程序的运行次序应是怎样的? 答:D3D2D4D5D1D3D5 练习在8086的中断服务程序中,都要写一条IRET指令,是否可以用以下程序段来完成中断返回:INTSUB PROC;中断服务的具体指令RETPOPFINTSUB ENDP8.4 ARM中断系统简介8.4.1

温馨提示

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

评论

0/150

提交评论