收藏 分享(赏)

微机原理 中断.ppt

上传人:rav7596 文档编号:5376915 上传时间:2019-02-25 格式:PPT 页数:101 大小:1.73MB
下载 相关 举报
微机原理 中断.ppt_第1页
第1页 / 共101页
微机原理 中断.ppt_第2页
第2页 / 共101页
微机原理 中断.ppt_第3页
第3页 / 共101页
微机原理 中断.ppt_第4页
第4页 / 共101页
微机原理 中断.ppt_第5页
第5页 / 共101页
点击查看更多>>
资源描述

1、第九章 微型计算机中断系统,9-1 概述 9-2 中断处理过程 9-3 中断优先级和中断嵌套 9-4 可编程中断控制器8259A,教材第七章内容,9-1 概述,一、中断概念,1、中断思想的提出 CPU与外设数据传送时的矛盾:高速CPU与慢速外设; 数据传送方式:无条件方式、查询方式缺点:外设有限制或处理器运行时间极大浪费,工作效率低。 解决办法:一方面设法提高外设的工作速度;另一方面提出设想:外设主动提出请求,处理器响应处理中断思想,2、中断的定义 CPU正常运行程序时,由于CPU的内部事件或外设请求,引起CPU暂时中断正在运行的程序,转去执行相应的外设(或内部事件)的服务程序,程序执行完后又

2、返回到原先的程序继续执行,这一过程称为中断。 中断流程如下页图所示,3、使用中断的好处 分时操作 提高效率CPU在启动外设后与外设同时工作。当外设的数据准备好向CPU发中断请求,CPU响应处理。CPU可让多个外设同时工作,这将加快数据传送速度、提高CPU的效率。 实现实时处理实时控制时,现场各种信息可随时发出中断请求 故障自行处理将计算机在运行的过程中常遇到的意外情况,如:电源突跳,存储器出错,运算溢出等设计成中断,计算机可利用中断系统自行处理或告警。,4、与中断相关的基本概念中断源 中断类型号 中断请求 中断响应 中断服务程序 中断返回,中断向量 中断向量表 中断优先级 中断嵌套 中断屏蔽,

3、5、中断系统的基本功能 (1)中断响应,中断服务,中断返回,中断屏蔽; (2)中断优先级排队; (3)中断嵌套。注意:这些功能是由软件与硬件共同构成的系统完成的。本章讨论与8086/8088CPU相配合的中断系统,二、中断的分类(中断源的分类),8086/8088可以处理256种不同的中断。 两类:内部中断和外部中断。 中断源示意图如下图:,1、外部中断(硬件中断) 不可屏蔽中断NMI不能用软件屏蔽,CPU必须响应;上升沿触发;中断的类型号为2。 可屏蔽中断INTRIF=1,CPU响应中断;IF=0,CPU不响应;高电平触发,高电平维持到CPU响应中断时结束;中断类型号由中断控制器8259A或

4、硬件电路提供。,2、内部中断(软件中断)由三种情况引起: 由软中断指令INT n引起INT n指令,类型号n(0-255)。 由CPU运算错误引起 除法错中断:类型号0 溢出中断:类型号4,由INTO指令引起的中断;,2、内部中断(软件中断)(续) 由调试程序debug设置的中断 单步中断:类型号1,TF=1时产生(当前指令需执行完);Debug状态下的T命令执行时产生; 断点中断:类型号3,INT 3指令引起的中断,属于软件中断Debug状态下由G命令设置,相当于是在程序的某个位置设置了一条INT 3 。,引脚INTR、INTA#、NMI 指令INT n、INTO、IRET,三、与中断有关的

5、引脚和指令,不同类型的中断处理过程略有不同,本节所介绍的内容主要针对可屏蔽中断的处理过程。可屏蔽中断处理过程步骤: 中断请求 中断响应 保护现场 转入执行中断服务子程序 恢复现场 中断返回,9-2 中断处理过程,可屏蔽中断处理流程图,1、CPU响应可屏蔽中断的条件 (1)外设提出中断申请; (2)本中断未被中断控制器屏蔽; (3)本中断优先级最高; (4)CPU允许中断;,一、CPU响应可屏蔽中断过程,2、CPU响应可屏蔽中断的过程 CPU在每条指令的最后一个T周期,检测INTR,若为高电平,且IF=1,则CPU响应中断。 响应过程中自动依次完成以下工作: CPU向外设发两个/INTA ,外设

6、收到第2个/INTA 后,立即往数据线上给CPU送中断类型号。 CPU从数据线上读取中断类型号; 将flags入栈;保护现行程序运行结果产生的状态和控制标志。,CPU响应中断的过程,关中断(清IF和TF)为了防止在进入中断处理,但并未执行中断程序这段时间内又响应新的中断。 保护断点将当前指令的下一条指令的CS和IP压入堆栈,使中断处理完成后能正确的回到原程序继续执行。 转入相应的中断服务子程序; 中断返回从堆栈中弹出断点的地址和flags的内容,返回主程序的断点处,继续执行主程序。,CPU响应中断的过程,确定中断源的方法:查询中断和矢量中断。 查询中断:一种软件查询法,中断响应后,启动中断查询

7、程序,依次查询哪个外设申请了中断,检测以后,转到此设备预先设置的中断服务程序处执行。这种中断处理过程称为查询中断。特点:速度慢,且后检测的设备服务机会少。 矢量中断:中断响应后,外设中断接口电路将中断类型号送给CPU,CPU根据中断类型号找到对应的中断服务程序的入口地址送入CS或IP,然后转入相应的中断服务程序处执行。这种中断处理过程称为矢量中断,也叫向量中断。特点:速度快。,二、中断向量表,1、中断向量表又称:中断服务程序的入口地址表。中断服务程序的入口地址又称中断向量 8086在存储器最低的1KB(00000H003FFH)空间内,存放256个中断的中断向量。 每个类型号的中断向量占4字节

8、,高2字节存放段基址,低2字节存放偏移地址; 按照中断类型号的顺序依次将其中断向量存在1K的内存表中,格式如下:,中断类型号n与中断向量的地址关系:n4中断向量地址(4n 和4n+1)IP(4n+2和4n+3)CS,【例】某中断的类型号为68H,中断的操作过程如下:步骤分析: 取中断类型号68H; 计算中断向量地址68H*4=1A0H; 取中断入口地址的偏移地址送入IP,段地址送入CS; 转向中断服务程序; 中断返回到INT 68H指令的下一条指令。,中断操作过程图示,2、中断向量(中断入口地址)的设置IBM PC对256种中断类型已经进行地址分配,附录D中给出中断向量表。概念:将中断服务程序

9、的入口地址置入中断类型号所对应的中断向量表中。 两种方法:用指令设置;用DOS功能调用设置。,用指令设置中断服务程序的入口地址表,MOV AX,0 MOV ES,AX MOV BX,N*4 MOV AX,OFFSET INTRAD MOV ES:BX,AX MOV AX,SEG INTRAD MOV ES:BX+2,AXSTI INTRAD:PUSH AXIRET,PUSH DS MOV AX,0 MOV DS,AX MOV BX,N*4 MOV AX,OFFSET INTRAD MOV BX,AX MOV AX,SEG INTRAD MOV BX+2,AX POP DSSTI INTRAD:

10、PUSH AXIRET,利用DOS功能调用设置中断服务程序的入口地址表, PUSH DSMOV AX,SEG INTRAD;MOV DS,AXMOV DX,OFFSET INTRADMOV AL,NMOV AH,25HINT 21HPOP DS,利用DOS功能调用设置中断服务程序的入口地址表,注意: 为了避免直接使用中断向量的绝对地址,一般利用DOS功能调用INT 21H设置或取出中断向量。 应用时一般在设置自己的中断向量时,应先保存原中断向量,再设置新的中断向量,在程序结束前恢复原中断向量。,【例】利用DOS功能设置中断向量和取中断向量。MOV AL,N ;取中断向量,并存中断向量MOV A

11、H,35HINT 21HPUSH ESPUSH BXPUSH DSMOV AX,SEG INTRAD;设中断向量MOV DS,AXMOV DX,OFFSET INTRADMOV AL,NMOV AH,25HINT 21HPOP DS,POP DX;恢复原中断POP DSMOV AL,NMOV AH,25HINT 21HINTRAD:IRET,3、中断类型号的获取矢量中断中,中断入口地址依赖中断类型号,中断型号获取方法: 对于专用中断:除法出错、单步中断、不可屏蔽中断、断点中断和溢出中断,由CPU分别提供中断类型号04; 对于用户自己确定的软件中断INT n,类型号由n决定; 对于INTR引脚上

12、的中断: 由硬件电路设计产生中断类型号。 可用8259A获取中断类型号。,三、中断服务子程序,1、中断服务子程序特点 为”远”过程(类型为FAR) 要用IRET指令返回 2、中断服务子程序一般结构形式 保护现场(PUSH regs) 开中断(STI) 进行中断处理 关中断(CLI) 恢复现场(POP regs) 中断返回(IRET),【总结】中断处理过程中软件及硬件各自完成的功能归纳 1.主程序中的初始化(1)设置中断向量;(2)设置8259的中断屏蔽寄存器的中断屏蔽位;(3)设置CPU中断允许标志位IF(开中断STI); 2.硬件(外设接口)和CPU自动完成(1)外设向CPU INTR端发出

13、请求;(2)CPU发两个/INTA给外设;(3)CPU取中断类型号 n;(4)CPU自动将flags,CS,IP内容压入堆栈;,(5)清除IF,TF,禁止外部中断和单步中断;(6)从中断向量表中取(4n)地址中内容IP,取(4n+2)地址中内容CS;(7)转向中断服务子程序。 3.中断服务子程序 【注意】(1)对重复前缀的指令作为一条处理;(2)遇到STI和IRET,要执行两条后,再响应中断;(3)CPU自动清除IF,TF位,在中断服务程序不允许产生中断,如需要则必须开中断。,设计一个能接收一个中断源的中断系统,用8088CPU。,【例】,主程序初始化 将中断服务程序的入口地址装入中断向量表

14、PUSH DS MOV DX,OFFSET INTER1 MOV AX,SEG INTER1 MOV DS,AX MOV AL,80H MOV AH,25H INT 21H POP DS STI ,可屏蔽中断处理程序INTER1 PROC FAR PUSH AX ;保护现场 STI ;开中断以便允许;多重中断. ;中断处理 CLI ;关中断 POP AX ;恢复现场 IRET ;返回主程序 INTER1 ENDP,CPU处理中断的一般原则: 多个中断源同时向CPU请求中断,CPU由中断优先级排队决定,先响应优先级高的中断请求。 级别不同的中断同时发生时,由高到低依次处理。 级别相同的中断同时发

15、生时,按事先设定的次序处理 当CPU正在处理中断时,有更高优先级别的中断请求,并且IF1,CPU能响应更高级别的中断请求,而屏蔽掉低级的中断请求,形成中断嵌套,或称为多重中断。,9-3 中断优先级和中断嵌套,1、不同级别中断优先级顺序 计算机中的中断源,优先级从高到低的顺序如下: (1)内部中断(除法错,INTO,INT n) (2)NMI (3)INTR (4)单步中断,一、中断优先级,2、可屏蔽中断的优先级设定方法 软件查询中断优先级查询程序的次序,决定了外设优先级别的高低,先测试的中断源优先级别最高,依次下降。 硬件查询优先方式菊花链法 矢量中断优先级设置一般是采用中断优先级控制器(如8

16、259A)。,可屏蔽中断的优先级设定软件查询中断优先级,软件查询中断优先级,中断服务子程序处理流程,移位法XOR AL,AL IN AL,PORTRCR AL,1JC INTR0RCR AL,1JC INTR1 INTR0: INTR1:,软件查询中断优先级,中断服务子程序片断,测试法XOR AL,AL IN AL,PORTTEST AL,01H JNZ INTR0TEST AL,02H JNZ INTR1 INTR0: INTR1:,可屏蔽中断的优先级设定硬件查询优先方式(菊花链法),矢量中断优先权控制器的原理图,可屏蔽中断的优先级设定矢量中断优先级,中断嵌套:当CPU正在处理中断时,有更高

17、优先级别的中断请求,并且IF1,CPU能响应更高级别的中断请求,而屏蔽掉低级的中断请求 以8259A为例介绍,8259A在完全嵌套优先级工作方式下,中断优先级的顺序为:IR0、IR1IR7。,二、中断嵌套,下面是一个中断嵌套的例子,【说明】 主程序必须有开中断指令,使IF1,才能响应中断。进入中断处理程序时,系统自动关中断,在中断服务程序中必须有STI开中断指令,这样才可以允许其它中断进入实现中断嵌套。 中断结束返回前要有EOI中断结束命令,用来清除中断服务寄存器中的对应位,允许低级中断进入。最后有中断返回指令IRET,使程序返回到被中断的程序的断点处。,中断处理程序中如果没有STI指令,中断

18、处理中不会受其它中断影响,在执行IRET指令后,因为自动返回中断断点及中断标志寄存器PSW的内容,当IF的值为1,系统便能开放中断。 一个正在执行的中断处理程序,中断服务寄存器相应位置“1”,在开中断(IF1)的情况下,能够被优先级高于它的中断源中断。但如果中断处理中提前发出了EOI命令,则清除了正在执行的中断服务,中断服务寄存器置“1”位被清0,允许响应同级或低级的中断申请。但这种情况要尽量避免,防止重复嵌套,使优先级高的中断不能及时服务,因此一般EOI结束命令放在中断返回指令IRET前面。,设系统有两个外部中断源,类型号分别是40H、41H。试用链式结构实现8086中断系统的扩展。要求:a

19、.画出实际电路。b.编写程序,实现不同的中断能转入相应的服务程序入口处。,【例】,解:a.画出实际电路,.,MOV DX,0FFSET INTER1MOV AX,SEG INTER1MOV DS,AXMOV AL,40H MOV AH,25H INT 21H,.,b.主程序,MOV DX,0FFSET INTER2MOV AX,SEG INTER2MOV DS,AXMOV AL,41H MOV AH,25H INT 21H,中断服务程序 INTER1 PROC FARPUSH AX ;保护现场STI ;开中断,以实现多重中断POP AX ;恢复现场IRET INTER1 ENDP INTER2

20、 PROC FARPUSH AX ;保护现场STI ;开中断,以实现多重中断POP AX ;恢复现场IRET INTER2 ENDP,主要内容:功能和引脚内部结构8259A的中断管理方式8259A的编程方式8259A的中断级联及举例,9-4 可编程中断控制器8259A,1、主要功能 (1)具有8优先级控制,通过级联可以扩展到64级 优先级控制; (2)每一级中断可由程序单独屏蔽或允许; (3)可提供中断类型号传送给CPU; (4)可以通过编程选择多种不同工作方式。,一、功能和引脚,2、引脚,D7D0:双向数据线,三态,与系统的 数据总线相连。 IR7IR0:外设的中断请求信号输入端,输入;中断

21、级联时,连接8259A从片INT端。RD#:读命令信号,输入,低电平有效,用来控制数据由8259A读到CPU。 WR#:写命令信号,输入,低电平有效,用来控制数据由CPU写到8259A。 CS#: 片选信号,输入,连译码器输出。,A0:选择8259A的两个端口,输入,连低位地址线。 INT:向CPU发出的中断请求信号,输出与CPU的INTR端相连。 INTA#:CPU给8259A的中断响应信号,输入;8259A要求两个负脉冲的中断响应信号;第1个是CPU响应中断的信号;第2个结束后,CPU读取8259送的中断类型号,CAS2CAS0:双向级联信号线作主片时,为输出;作从片时,为输入与SP#/E

22、N#配合实现8259A级联 SP#/EN#: 编程/双向使能缓冲 输入时:决定本片8259A是主片还是从片:SP#/EN# =1,则为主片;SP#/EN# =0 ,则为从片。输出时:启动8259A到CPU之间的数据总线驱动器输入还是输出,由 8259A的工作方式决定:缓冲方式:SP#/EN#为输出;非缓冲方式:SP#/EN#为输入。,二、内部结构,1、数据总线缓冲器8259A与系统数据总线的接口,8位、双向、三态传送信息种类:(1)控制字 (2)状态信息 (3)中断类型号 2、读/写控制电路 读写控制电路接收CPU送来的读/写命令RD#、WR#,片选信号CS#及端口选择信号A0,用于控制825

23、9A与CPU之间的信息传送。,8259A的读写功能,3、级联缓冲/比较器8259A和系统的连接有两种方式: (1)缓冲方式多片8259A级联的系统中使用,作为输出端当EN#0时,控制数据从8259A送到CPU当EN#1时,控制数据从CPU送到8259A (2)非缓冲方式单片8259A或少量8259A级联时使用,作为输入端控制8259A作为主片还是从片:SP#1,为主片;SP#0,为从片单片8259A时, SP#接高电平,4、中断请求寄存器IRR8位寄存器,存放外部输入的中断请求信号IR7IR0;当某个IR端有中断请求时,IRR相应的某位置1;当中断请求被响应时,IRR的相应位清0。 5、中断屏

24、蔽寄存器IMR8位寄存器,用来存放各级中断请求的屏蔽信息。若IMR第i位为1,则IRi中断申请被屏蔽若IMR第i位为0,则IRi中断申请被允许 6、优先级判别器PR对保存在IRR中的中断请求进行优先级识别,送出最高优先级的中断请求到CPU和ISR中去。,7、中断服务寄存器ISR 8位寄存器,保存正处理的中断请求信号; CPU响应后,由第一个 信号将ISR寄存器中的相应位置“1”;中断返回前,由中断结束命令EOI将其清0。 没进行中断服务的ISR各位为0。,8、控制电路 根据IRR和IMR的情况,根据PR判定优先级,控制8259A内部各部分协调工作,主要功能如下: 控制8259A向CPU发INT

25、信号和接收 ; 控制ISR相应位置1,IRR相应位清0; 控制8259A送中断类型号。,三、8259A的中断管理方式 8259A有多种工作方式,是通过编程来设置的。 1、8259A的编程结构8259A的中断管理方式是通过控制字来设置的。初始化命令字写入寄存器ICW1ICW4,只能设定1次。操作命令字写入寄存器OCW1OCW3,用来对中断处理过程进行控制,在系统运行过程中,操作命令字可进行多次设置。,2、优先级设置方式 (1)完全嵌套方式 默认方式; 中断优先级固定,分07级,其中IR0最高,IR7最低; 允许中断嵌套(只允许高级中断低级); 可用普通EOI、自动AEOI结束中断,一般用普通EO

26、I。 (2)特殊全嵌套方式 与(1)基本相同,区别在于允许同级中断请求进入; 主要用于8259A级联时,主片的优先级设定;,(3)优先级自动循环方式 (4)优先级特殊循环方式 3、中断结束方式中断处理结束时,发送中断的结束命令EOI,使ISR寄存器中对应位清“0”。不同时刻使ISR中对应位清“0”,对应着不同的中断结束方式。 (1)普通EOI结束方式 中断返回前,CPU向8259A传送EOI结束命令,将ISR中优先级最高位清0,用于完全嵌套工作方式;EOI结束命令要放在IRET前;,(2)特殊EOI结束方式 CPU向8259A发特殊EOI结束命令,命令中将当前要清除的中断级别也传给8259A。

27、此时,8259A将ISR寄存器中指定级别的对应位清“0”。 (3)自动EOI结束方式CPU发第二个INTA脉冲后,8259A自动将ISR寄存器中对应位清“0”;容易引起重复嵌套,不建议用。,4、循环优先级的循环方法根据中断结束方式不同,优先级循环又分为三种: (1)普通EOI循环方式中断结束后,将ISR中优先级最高的位清0,此级赋予最低级,最高级为其下一级,其余类推。 (2)特殊EOI循环方式中断结束后,将ISR中由L2L0给定级别相应的位清0,此级赋予最低级,最高级为其下一级,其余类推。 (3)自动EOI循环方式CPU发第二个INTA脉冲后,将ISR寄存器中对应位清“0”;并按照普通EOI循

28、环方式改变优先级。,5、中断源屏蔽方式可以对中断请求单独屏蔽,有两种方式: (1)普通屏蔽方式通过操作命令字OCW1将IMR中某一位或某几位置“1”,可将对应位的中断请求屏蔽掉。 (2)特殊屏蔽方式屏蔽本级中断,允许高级或低级中断进入,通过OCW3进行设置。,6、中断请求引入方式 (1)边沿触发方式8259A的IRi端以上升沿作为中断请求信号。 (2)电平触发方式8259A的IRi端以高电平作为中断请求信号。 注意:当中断响应后,中断输入端的高电平必须及时撤出。 (3)中断查询方式,四、8259A的编程方法分为两步: 初始化编程:由CPU向8259A送初始化命令字ICW。在8259A开始正常工

29、作前,必须写初始化命令字使其处于开始状态。 操作命令编程: 由CPU向8259A送操作命令字OCW,可以在8259A初始化后,根据需要在程序的任何地方写入。,1、初始化命令字 (1)ICW1 芯片控制初始化命令字,例7-13 IBM PC/XT系统初始化中,设ICW1=13H,表示系统中8259A为单片方式,上升沿触发,要求设置ICW4。指令为:MOV AL,13HOUT 20H,AL,(2)ICW2设置中断类型号初始化命令字中断类型号基值,即IR0的类型号。其中低3位初始时为0,高5位由用户设定。工作过程中,低3位值由IR0IR7中响应哪级中断(对应000111)来确定。,例7-14 在IB

30、M PC/XT系统中,T7T3=00001,所以对应8个中断的类型号为08H0FH。端口地址为21H。设置ICW2的指令为:MOV AL,8OUT 21H,AL,(3)ICW3标识主片/从片初始化命令字8259A主片格式:,(4) ICW4方式控制初始化命令字,ICW设置的顺序:,ICW功能: 设定触发形式:电平、上升沿; 设定工作方式:单片、级联; 设定中断类型号基值; 设定优先级方式; 设定中断结束方式。,2、8259A的操作命令字及编程 (1)OCW1中断屏蔽操作命令字用于设置和读出中断屏蔽寄存器的内容,必须在ICW之后写入,例7-18 设某中断系统要求屏蔽IR3,IR5,8259A编程

31、指令为:MOV AL,00101000BOUT 21H,AL,(2)OCW2设置8259A的优先权循环方式和中断结束方式。,(3)OCW3特殊屏蔽方式和查询方式命令字设定特殊屏蔽方式和中断查询的工作方式;设置读取8259A的IRR和ISR寄存器的内容。,3、编程小结 ICW在程序初始化时写入,要按顺序且只能设定1次 OCW在初始化命令字之后,可根据需要在程序的任何位置去设置,可设置多次。 ICW1、OCW2、OCW3写入8259A偶地址端口,用D4D3位区分; ICW2、ICW3、ICW4和OCW1写入8259A奇地址端口,用顺序区分。,五、8259A的中断级联,思考:最多级联64级,需要几片

32、8259A?如果4片8259A,可管理多少级中断?,一片8259A管理8级中断,当申请中断的外设多于8级时,可以将8259A级联使用,图7-14给出了两级级联的例子,第一级为8259A主片,第二级为8259A从片,主片可接18片从片,这样最多可以管理64级中断源。,(9片) (29级),例7-21 某系统中两片8259A采用中断级联方式组成中断系统,从片的INT端连主片的IR3端,若当前主片从IR1,IR5端引入两个中断请求,中断类型号为31H,35H。中断服务程序的段基址为1000H,偏移地址分别为2000H及3000H。从片IR4,IR5端引入中断请求,类型号为44H和45H。中断服务程序

33、基址2000H,偏移地址为3600H和4500H。,(1)设置中断向量将4个中断源的入口地址写入中断向量表MOV AX,1000H ;送段地址MOV DS,AXMOV DX,2000H ;送偏移地址MOV AL,31H ;中断类型号MOV AH,25HINT 21HMOV DX,3000H ;送偏移地址MOV AL,35H ;中断类型号INT 21H,MOV AX,2000H ;送段地址MOV DS,AXMOV DX,3600H ;送偏移地址MOV AL,44H ;中断类型号MOV AH,25HINT 21HMOV DX,4500H ;送偏移地址MOV AL,45H ;中断类型号INT 21H

34、,(2)主片8259A初始化编程8259A主片端口地址为FFC8H和FFC9HMOV AL,11H ;定义ICW1,主片级联使用,边沿触发;要设ICW4 MOV DX,0FFC8HOUT DX,ALMOV AL,30H ;定义ICW2,中断类型号30H37HMOV DX,0FFC9HOUT DX,ALMOV AL,08H ;定义ICW3,IR3端接从片的INT端OUT DX,ALMOV AL,11H ;定义ICW4,特殊全嵌套方式,非缓冲方式OUT DX,AL ;非自动EOI结束方式MOV AL,0D5H ;定义OCW1,允许IR1,IR3,IR5中断,其余屏蔽OUT DX,AL,(3)从片8

35、259A初始化编程8259A从片端口地址为FFCAH和FFCBHMOV AL,11H ;定义ICW1,级联使用边沿触发,要设ICW4MOV DX,0FFCAHOUT DX,ALMOV AL,40H ;定义ICW2,引入中断类型号40H47HMOV DX,0FFCBHOUT DX,ALMOV AL,03H ;定义ICW3,从片接在主片的IR3端OUT DX,ALMOV AL,01H ;定义ICW4,完全嵌套方式,非缓冲方式OUT DX,AL ;非自动EOI结束方式MOV AL,0CFH ;定义OCW1,允许IR4,IR5中断,其余屏蔽OUT DX,AL,(4)中断的结束编程无论对主片8259A或

36、从片8259A,操作命令字可根据需要在操作过程中设置,OCW2命令字定义中断结束方式时,通常放在中断服务子程序中。 主片的中断结束命令为:MOV AL,20H ;定义OCW2,普通EOI结束方式MOV DX,0FFC8HOUT DX,AL 从片的中断结束命令为:MOV AL,20H ;定义OCW2,普通EOI结束方式MOV DX,0FFCAHOUT DX,AL,例7-9 编写中断处理程序,要求主程序运行时,每10秒响铃一次,同时屏幕上显示信息“The bell is ring!”可以利用中断类型1CH进行处理,因为系统定时器(中断类型8)的中断处理程序中,时钟中断一次(约18.2次/秒)要调用

37、一次INT 1CH。在ROM BIOS中,1CH的处理程序只有一条IRET指令,仅为用户提供一个中断类型号。这样可以利用系统定时器的中断间隔,将用户设计的程序来代替原有的INT 1CH程序。在编写程序时,有两部分的工作:1)在主程序初始化部分,先保存当前中断向量表内容,再置新的中断向量。2)在主程序结束部分恢复保存的1CH向量。,DATA SEGMENTCOUNT DW 1MESS DB The bell is ring!,0AH,0DH,$ DATA ENDS STACK SEGMENT DB 100 DUP(?) STACK ENDS CODE SEGMENT MAIN PROC FARA

38、SSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK,START MOV AX,STACKMOV SS,AXPUSH DSSUB AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV AL,1CH ;取原中断向量MOV AH,35HINT 21H,PUSH ES ;存原中断向量PUSH BXPUSH DSMOV DX,OFFSET RING MOV AX,SEG RINGMOV DS,AXMOV AL,1CH ;设响铃中断向量MOV AH,25HINT 21HPOP DS,IN AL,21H ;设置中断屏蔽位AND AL,0FEHOUT 21H,ALS

39、TI ;开中断MOV DI,2000 ;延时 DELAY:MOV SI,3000 DELAY1:DEC SIJNZ DELAY1DEC DIJNZ DELAY,POP DX ;取原中断向量POP DSMOV AL,1CH ;恢复原中断向量MOV AH,,25HINT 21HRET MAIN ENDP,RING PROC NEAR ;响铃中断服务子程序PUSH DSPUSH AXPUSH CXPUSH DXMOV AX,DATAMOV DS,AXSTIDEC COUNT ;10秒计数JNZ EXIT,MOV DX,OFFSET MESSMOV AH,09H ;显示信息INT 21HMOV DX,

40、100IN AL,61H ;响铃AND AL,0FCH SOUND:XOR AL,02HOUT 61H,ALMOV CX,140H ;延时 WAIT: LOOP WAIT,DEC DXJNE SOUNDMOV COUNT,182 ;10秒值,为下次准备 EXIT: CLI ;关中断POP DXPOP CXPOP AXPOP DSIRET RING ENDP CODE ENDSEND START,小结,主要内容: 概述:中断过程、基本概念、使用中断好处、中断分类 中断处理过程(可屏蔽中断)响应中断条件及过程中断向量表、中断向量的设置、中断类型号的来源 可屏蔽中断优先级设定方法、中断嵌套过程 可编程中断控制器8259A 重点掌握 基本概念、基本过程、8259A级联管理中断级数计算及简单应用。,P302 1、2、4、5、6、7、8、9,课后练习,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 计算机原理

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报