第六章中断系统

上传人:公**** 文档编号:579376481 上传时间:2024-08-26 格式:PPT 页数:68 大小:993.52KB
返回 下载 相关 举报
第六章中断系统_第1页
第1页 / 共68页
第六章中断系统_第2页
第2页 / 共68页
第六章中断系统_第3页
第3页 / 共68页
第六章中断系统_第4页
第4页 / 共68页
第六章中断系统_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《第六章中断系统》由会员分享,可在线阅读,更多相关《第六章中断系统(68页珍藏版)》请在金锄头文库上搜索。

1、第六章 中断系统第一节 基本概念一、中断 1、中断的定义 当CPU正常运行时,由于随机事件(内部或外部)引起CPU暂时中止正在运行的程序,转去执行请求中断的外设(或内部事件)的中断服务程序,中断服务程序结束后再返回被中止的程序,这一过程称为中断。 2、中断源和中断请求 能够向CPU发出中断请求的中断来源称为中断源。I/O设备(CRT、打印机等)、数据设备(磁盘、磁带等)、实时时钟、故障信号、软件中断等都是中断源。 中断源能发出中断请求信号到CPU,所以中断源中一般要求有中断请求触发器,请求信号有边沿请求和电平请求两种。 3、中断系统的目的 维持系统正常工作,提高系统效率; 实时处理; 为故障处

2、理作准备。 4、中断分类 中断分外部中断和内部中断两大类;其中外部中断分为两类: 可屏蔽中断INTR,由标志寄存器中的 IF位控制; 不可屏蔽中断NMI,不受IF位控制。 5、中断系统功能 中断处理:发现中断请求、响应中断请求、执行中断服务程序、中断返回。 中断控制:中断优先权排队、中断嵌套 当系统中有多个中断时,有可能出现两个或两个以上的中断源同时提出中断请求,这时要求CPU根据中断优先权由高到低依次处理。 中断嵌套如图6.1所示。假定有两个中断源A和B,A的级别高于B,当CPU正在处理B中断时,允许A能中断B的中断处理,转去执行A的中断服务程序,在高级中断A处理完后,返回到原来打断处,继续

3、处理B的中断服务程序。图中为两级中断,还可以进行多级中断。图6.1中断嵌套示意图 二、中断处理过程 1、中断检测 中断源向CPU发中断请求是随机的,大多数CPU在现行指令周期结束时检测有无中断请求。8086CPU在每条指令的最后一个机器周期的最后一个时钟周期检测中断请求信号输入线INTR。 2、CPU响应中断的条件 CPU检测到INTR上有中断请求,要响应它需满足以下条件: CPU开放中断,即CPU内部设置的中断允许触发器=1,此触发器可用开中断指令(STI)置1,用关中断指令(CLI)清0。实际上就是标志寄存器中的IF位=1,表示开放可屏蔽中断。参见图6.2。 CPU在现行指令结束后响应中断

4、 图6.2 CPU内设置中断允许触发器IFF3、中断请求与中断屏蔽触发器 图6.3是具有中断请求与中断屏蔽的接口电路。每一个中断源都有一个中断请求触发器和一个中断屏蔽触发器。只有当该中断源不屏蔽时,它的中断请求信号才能发给CPU。 图6.3 具有中断请求与中断屏蔽的接口电路 3、CPU响应中断及处理过程 满足上述条件后,CPU响应中断,转入中断周期,完成以下操作,其时序如图6.4所示。 关中断:CPU响应中断时,发出中断响应信号INTA,同时内部自动地关中断(IF=0),以禁止接受其他的中断请求,以免破坏当前中断服务的现场。 保留断点:把断点处的指令指针IP值和CS值压入堆栈,以便中断处理完成

5、后正确地返回主程序断点。 识别中断源:识别中断源一般有查询和向量中断(类型号)两种方法。 保护现场:把断点处的有关寄存器内容压入堆栈。 中断服务:执行中断服务程序 图6.4 中断时序流程图图6.5 中断响应服务 及返回流程图 恢复现场:将压入堆栈的有关寄存器的内容弹出。 开中断:在中断服务的最后要开中断,以便CPU能响应新的中断请求。 如果实现中断嵌套,可以在中断服务程序中,在适当时候重新开放中断,以便允许响应较高级的中断。 中断返回:将堆栈内的断点值弹出。上述过程如图6.5所示。三、中断优先级和中断嵌套 1、中断优先级:中断优先级一般采用软件查询或硬件中断优先级编码电路。 2、中断嵌套:当C

6、PU执行优先级较低的中断服务时,而允许响应比它优先级高的中断请求,而将正在处理的中断暂时挂起,这就是中断嵌套。第二节 8086/8088的中断系统一、中断分类 8086/8088的中断系统如图6.6所示。 1、外部中断 8086/8088CPU有两条引脚提供外部中断源请求中断:一条是高电平有效的可屏蔽中断INTR;另一条是正跳变有效的非屏蔽中断NMI。外部中断又称硬件中断。 可屏蔽中断:可屏蔽中断是由用户定义的外部硬件中断,受中断标志位IF的控制。 非屏蔽中断:不受中断标志位IF的控制。 图6.6 8086/8088的中断系统TF=1 硬件中断软件中断 2、内部中断 内部中断又称软件中断,主要

7、来自CPU内部的软件中断。 图6.6中,上部是外部的硬件中断;下部是内部的软件中断。二、中断向量表 1、中断向量的定义 所谓中断向量实际上就是中断服务程序的入口地址。每个中断类型号对应一个中断向量。中断向量占4个字节存储单元,其中前两个字节放中断向量的偏移地址(IP),且低字节在前,高字节在后;后两个字节放中断向量的段地址(CS),也是低字节在前,高字节在后。 2、中断向量表 存放中断向量的存储区称为中断向量表。通常在存储器的低地址区。 3、8086/8088的中断向量表 8086/8088有256种中断类型,类型号为0-255(或0-FFH),共有256个中断向量,每个占4个存储单元,所以需

8、要1024个字节,在存储器的最低端,地址从00000H-003FFH,这块地址空间就是中断向量表。 如图6.7所示。 图6. 7 8086/8088中断向量表 从表中,知道了中断类型号,便可计算出相应的中断向量在表中存放的位置,称为中断向量表地址,或称为中断向量指针。从中断向量表地址中取出中断向量,便得到了该中断类型号的中断服务程序入口地址。即 中断类型号4 = 中断向量指针的低地址 中断类型号4+2 = 中断向量指针的高地址 (中断向量指针的低地址) (IP) (中断向量指针的高地址) (CS)例1:中断类型号为27H 则中断向量指针的低地址= 27H 4= 9CH 中断向量指针的高地址=

9、27H 4+2= 9EH 即该中断向量存放在0000H:009CH开始的4个连续单元中。如果这4个单元中的内容如下: 0000:009C 2AH 0000:009D 43H 0000:009E 65H 0000:009F 87H 则该中断类型号27H的中断向量(中断服务程序入口地址)的逻辑地址是8765H:432AH,即(CS)=8765H,(IP)=432AH;物理地址是8B97AH。 4、8086/8088中断的分类 前5个是专用中断(类型0-4) 类型0:除数为0中断 类型1:单步中断 类型2:NMI中断 类型3:断点中断 类型4:溢出中断 保留的中断(类型号05-3FH):这是Inte

10、l公司为软件、硬件开发保留的中断类型,大部分用于系统中断,如20H-3FH为DOS中断调用。 供用户定义的中断(类型号40H-FFH):使用用户自己定义的中断,用户必须把该中断的中断向量填写到中断向量表中。 填写方法有两种: 用指令填写 例2:为中断类型N设置中断向量,该中断的中断服务程序的符号地址是INTHAND。movax, 0moves, ax ;中断向量表的段地址movbx, N*4 ;中断向量表的偏移地址movax, offset INTHAND ;得到INTHAND的偏 移地址movES:word PTRbx, ax ;放到中断向量表中movax, seg INTHAND ;得到I

11、NTHAND的段 地址movES:word PTRbx+2, ax;放到中断向量表中INTHAND:;中断服务处理程序 IRET 用DOS功能调用来设置中断向量 、设置中断向量 入口参数: AH=25HAL=类型号DS:DX=中断向量 执行INT 21H 、取中断向量 入口参数: AH=35HAL=类型号 执行INT 21H 返回时ES:BX=中断向量 例3:使用DOS功能调用存取中断向量moval, Nmovah, 35H;取原中断向量int21Hpush es ;保存原中断向量的段地址push bx ;保存原中断向量的偏移地址pushdsmov ax, seg INTHAND ;得到INT

12、HAND的段地址movds, axmov dx, offset INTHAND;得到INTHAND的偏移地址moval, N;类型号 movah, 25H;设置中断向量int21H popdspopdx ;恢复原中断向量popds ;mov al, N ;将原中断向量写回去mov ah, 25H ;int21HretINTHAND: iret 三、外部中断 1、非屏蔽中断(NMI):不受中断标志位的控制,中断类型号为2,所以中断向量放在0000:0008开始的4个单元中。NMI中断一般用于紧急情况的处理。 2、可屏蔽中断(INTR):受中断标志位的控制,IF=1,CPU才能响应INTR中断。C

13、PU响应INTR中断时,往INTA引脚上发两个负脉冲,外设接到第二个负脉冲后,立即往数据总线上送出中断类型码,供CPU读取。 中断响应需要两个机器周期,参见图6.9。四、内部中断 内部中断即软件中断,它不受IF标志的控制,但单步中断受TF标志的控制。8086/8088的中断如下表6.1所示: 8086/8088中断响应需要两个总线周期 图6.9 8086/8088中断响应总线周期 表6.1 8086/8088的中断优先级五、中断响应和中断处理过程 参见图6.8所示。从图中可知,可屏蔽中断要多两个步骤,即要先判断IF是否为1,若IF=1则进入中断响应,此时CPU要读取中断类型码,然后进入所有中断

14、都要做的事。 将标志寄存器FR的内容压入堆栈 将中断允许标志IF和单步标志TF清零 将断点保护到堆栈中。所谓断点就是指响应中断时,主程序中当前指令下面的一条指令的段寄存器CS的值和指令指针寄存器IP的值压入堆栈,先压CS,再压IP的值。 根据当前中断的中断类型码查中断向量表,得到中断向量(中断服务程序入口地址)分别装入CS和IP,从而转到相应的中断服务程序。 执行中断服务程序,结束后恢复断点,从而继续执行原来的程序。 图中在得到中断服务程序入口地址后,查看NMI是否有,接着查看TEMP,若TEMP=1,则在中断前CPU已处于单步方式,就和NMI一样重新保护现场和断点,转入单步中断服务程序。若T

15、EMP=0,即中断前CPU处于非单步方式,则CPU转去执行最先引起中断的中断服务程序。 最后举一个例说明中断操作过程。例4:某中断类型号为72H,图6.10示出了中断操作过程。 取中断类型号72H; 计算中断向量地址72H4=1C8H; 72H4+2=1CAH; 取中断服务程序入口地址的偏移量送IP,IP=2050H, 段地址送CS,CS=A000H; 转入中断服务程序A000H:2050H; 中断返回到INT 72H指令的下一条指令MOV AX , BX。 六、可屏蔽中断的过程 1、INTR中断的全过程 首先中断请求信号INTR由外部设备产生,并送到8086的INTR引脚上。 如果IF=1,

16、则在CPU完成正在执行的指令后,便开始响应中断,步骤如下: CPU读取中断类型号n。CPU 通过INTA发中断响应信号给接口,并启动中断过程。这个响应信号将使发中断请求的接口把一个字节的中断类型号通过数据总线送给CPU; 按先后顺序把PSW(即FR)、CS和IP压入堆栈; 清除IF和TF标志; 把4n +2的字存储单元中的内容读入 CS中,把4n 的字存储单元中的内容读入 IP中,即得到中断向量; CPU 从新的CS:IP值开始执行中断服务程序,若允许中断嵌套,则一般在中断服务程序中保存寄存器后,就安排一条STI指令,以便响应优先权较高的中断。在中断服务程序末尾安排一条IRET返回指令。 至于

17、不可屏蔽NMI中断,与上述操作基本类似,只是不需要读取中断类型码,因为它的中断类型码由CPU内部自动产生。 2、中断类型号的获得 除法错误,单步中断,非屏蔽中断。断点中断和溢出中断分别由CPU内部自动提供中断类型号(0-4)。 软件中断则是从指令流中,即在第2个字节中读得中断类型号。 外部中断INTR可以用不同的方法获得中断类型号,通常由硬件提供,如8259A芯片可以将中断类型号送到数据总线上,由CPU读取而获得。七、中断服务子程序的设计 设计中断服务子程序的步骤如下: (1)选择一个中断矢量。如果是硬件中断,则要使用硬件决定的中断矢量。如果是采用软件中断,即用INT n指令的方式,则可在系统

18、保留给用户的中断矢量号中选一个中断矢量。例如选50H号中断矢量。 (2)将中断子程序的入口地址置入中断矢量表的相应表项中,其置入方法有两种: 一种是用数据传送指令将中断服务子程序的入口的偏移地址放在中断矢量表4 n的字单元中,将中断服务子程序的入口的段地址放在中断矢量表4 n+2的字单元中。 二是采用DOS功能调用,这在前面已讲过。 (3)编写中断服务子程序第三节 可编程中断控制器8259A 8259A是一个可编程中断控制器,能控制8级向量中断,通过级联方式(用9片8259A),最多可构成64级向量中断系统。在8259A中能判断一个中断请求输入是否有效,是否被屏蔽和进行优先级判决,并在CPU响

19、应中断后,将中断类型码发给CPU。一、 8259A的引脚 如图6.11所示,它有28个引脚,为标准芯片,即左下角为地,右上角为电源。 二、8259A的内部结构 1、数据总线缓冲器 2、读写控制电路,一片8259A只占用两个端口地址,由A0来选择,其它高位地址译码输出作为片选信号CS。WRRD分别为写信号和读信号。 、级联缓冲器/比较器,扩充中断用。 、中断请求寄存器IRR,位寄存器,每一位对应IR0-IR7,某根线上有中断请求,则IRR中对应位置。 、中断服务寄存器ISR,CPU当前正处理的IRi中断请求时,该寄存器i位置1(i = 0- 7)。 6、中断屏蔽寄存器IMR,当IMR的第i位为1

20、时,禁止IRi来的中断请求。 7、优先级判别器PR,当有多个中断同时请求中断时,判别当前优先级最高的中断请求进入系统。 8、控制电路,控制芯片内个部件协调一致地工作。三、8259A的工作方式 1、中断触发方式,电平触发方式或边沿触发方式(由低到高的正跳变),利用初始化命令字ICW1来设置。 2、中断结束方式,中断请求处理结束时,需将ISR中相应位清零。 自动中断结束方式(自动EOI方式),中断处理结束时自动将ISR中相应位清零,只需将初始化命令字ICW4中的AEOI置为1即可实现这种方式。 普通中断结束方式( 普通EOI方式) ,用在8259A的全嵌套方式下,即在CPU处理完一个中断请求时需8

21、259A发送一个EOI命令,8259A收到EOI后,将ISR中最高优先级的置1位清零(即当前正在处理的中断)。用操作命令字OCW2中的EOI=1, SL=0, R=0的设置来实现。 特殊中断结束方式,在非全嵌套方式下,通过向8259A发一条特殊中断结束命令来判断要清除ISR中置1位中的哪一位。用操作命令字OCW2中的EOI=1, SL=1, R=0的设置来实现,此时OCW2中的L2、L1、L0这3位指出了到底要清除ISR中的哪一位。 3、优先级管理方式 全嵌套方式:全嵌套方式是8259A初始化后自动进入的基本工作方式。此时优先级从IR0到IR7依次降低。当某一中断处理时,可响应比它高的中断,但

22、禁止比它低的或同级中断进入。当某一中断请求处理结束时,CPU向8259A发送中断结束命令EOI,以使ISR中相应位清零。 特殊全嵌套方式:与的普通全嵌套方式差不多, 区别是CPU处理某一中断时,允许比它高的和与它同级的中断请求进入,而只禁止比它低的中断请求。 自动循环方式(普通EOI循环方式) 在这种方式下,任何一级中断请求被处理完后, CPU向8259A发送中断结束命令EOI,以使ISR中优先级最高的置1位清零,并重新赋给它最低优先级,而将最高优先级赋给比它低一级的中断请求,其它中断请求的优先级则以循环方式类推。 特殊EOI循环方式,用户根据要求用置优先级命令指定最低优先级,例如设置IRi为

23、最低优先级,则最高优先级为IRi+1,其它各级按循环方式类推。 例1:普通EOI循环方式举例,参见6.2. 某系统中原来定义的是IR0为最高级, IR7为最低级,当前正在处理IR2和IR6引入的中断请求,因此ISR寄存器中第2位和第6位置1,待第2级中断处理完,CPU向8259A发回普通EOI命令,ISR中级别高的第2位清0,并将优先级由原定义的第2级改为最低级(第7级),而将最高级(第0级)赋给原来的第3级(IR3),其它级的优先权按循环方式依次改变级别。待第6级中断处理完后也如此处理。 例2:特殊EOI循环方式举例,参见表6.3。 当前正在处理第2级和第6级中断,它们以嵌套方式引入系统。如

24、果当前CPU正在执行优先级高的第2级中断服务程序,用户在该中断服务程序中安排了一条优先权置位命令,将最低级优先权赋给IR4,那么待这条指令执行完 ,各中断源的优先级便发生变化,IR4具有最低优先级 ,但这时第2级中断服务程序并没有结束,因此ISR寄存 器中仍保持第2位和第6位置1,只是它们的优先级别已经分别被改变为第5级和第1级,上述变化过程如表6.3所示。4、中断屏蔽方式 普通屏蔽方式,将IMR中某一位或几位置1,则其对应的中断被屏蔽(即这些中断被禁止)。 特殊屏蔽方式 一般情况处理一个中断时,禁止同级或低级中断进入,但有些场合,在处理某个中断时,仅希望对本级屏蔽,可以响应高级或低级中断,此

25、时采用这种方式。 特殊屏蔽方式通过操作命令字OCW3中的ESMM和SMM同时置为1,并将IMR对应于本级中断的位置1来实现。四、8259A的级联使用 如图6.13所示,一片8259A为主片(SP/EN=1),其余8片8259A为从片(图中从片只画出了两片),从片的SP/EN=0。主片与从片的CAS0-CAS2相连。每片从片的INT接到主片相应的IRi上,主片的INT则与CPU相连。8259A在级联方式下的中断响应时序如图6. 14所示。 第一个INTA周期,主8259A将响应中断的级联地址从CAS0-CAS2发给所有的从8259A。第二个INTA周期,与该级联地址相符的从8259A向CPU发送

26、中断类型码n。 当从片8259A的中断请求处理结束时,CPU应发送两个EOI命令分别给主片和从片。 图6.13 8259A的级联使用INT去CPU五、 8259A的控制字及编程使用 1、初始化命令字,有四个,设置次序依次为: ICW1、ICW2、ICW3和ICW4。 ICW1 (A0=0,偶 地址端口) A5-A7,8086/8088中不用;在8085中作中断向量字 D4=1,是ICW1的标志; 地址 初始化命令字A0D7 D6 D5 D4D3D2D1D00A7 A6 A51LTIMADISNGL IC4 IC4=0,表示不写ICW4,=1表示要写ICW4;SNGL=0,级联,=1单片,不写I

27、CW3;ADI, 8086/8088中不用;LTIM=0,边沿触发,=1,电平触发。 ICW2(A0=1,奇地址端口) T7-T3是中断类型码的高5位,中断类型码的低3位由中断进入的引脚决定(IR0-IR7依次为000-111); D2-D0位不用。 A0D7D6D5D4D3D2D1D01T7T6T5T4T3000例如:ICW2=20H,则8259A的IR0-IR7的中断类型码依次为20H、21H、27H。 ICW3, (A0=1,奇地址端口)只在级联方式时用。 对于主8259A, ICW3表示哪些IRi引脚接有从8259A,接有从8259A的相应Si位置1,否则置0。 对于从8259A,ID

28、2-ID0表示本8259A(即从8259A)接在主8259A那一根IRi引脚上。 下图中包括一个主芯片和两个从芯片,共提供了22个中断等级。A0D7D6D5D4D3D2D1D01S7S6S5S4S3 S2/ID2 S1/ID1 S0/ID0主8259A8259A从片A8259A从片B 例3:图6.14A中主片的IR3和IR6两个输入端分别连接了从片A和B的INT。所以主片的ICW3 = 01001000B = 48H MOVAL,48H;主片的ICW3OUT21H,AL 例4:图中从片A和B的请求线INT分别连到主片的IR3和IR6 ,所以从片A的ICW3=00000011B=03H 从片B的

29、ICW3=00000110B=06H 设从片A的端口地址为A1H(奇地址),则 MOVAL,03H;从片A的ICW3 OUT0A1H,AL 设从片B的端口地址为B1H (奇地址) ,则 MOVAL,06H;从片B的ICW3 OUT0B1H,AL ICW4 , (A0=1,奇地址端口) PM=0,是8080/8085,=1是8088/8086; AEOI=0,为普通EOI方式,=1为自动EOI方式; BUF=1,缓冲方式,= 0为非缓冲方式; M/S,缓冲方式下规定本8259A是主片还是从片 = 0,是从片,=1,是主片; 在非缓冲方式下,该位无效; SFNM,中断嵌套方式选择,= 0,是全嵌套

30、,=1,是特殊全嵌套。A0 D7 D6 D5D4D3D2D1D01000SFNMBUFM/SAEOIPM 2、操作命令字,有三个OCW1-OCW3,设置次序没有规定先后,这点与ICW设置不同。 OCW1, (A0=1,奇地址端口) OCW1是中断屏蔽操作命令字,直接写入中断屏蔽寄存器IMR。M0-M7对应IR0-IR7,其中Mi位=1,则该IRi位屏蔽,即IRi线上的中断不被接收。 OCW2,用于设置优先级循环方式和中断结束方式。 A0D7D6D5D4D3D2D1D01M7M6M5M4M3M2M1M0A0 D7 D6 D5 D4 D3 D2 D1 D00RSL EOI00L2 L1 L0 D4

31、、D3 = 00是OCW2的标志位; R=1循环方式优先级,= 0为非循环方式,即优先级固定;SL=1表示L2L1L0有效,=0表示这三位无效;EOI,中断结束命令位。 L2、L1、L0,在SL=1时,配合R,SL,EOI的设置,用来确定一个中断优先级的编码。 L2、L1、L0的8种编码000-111分别与IR0-IR7对应。 由R,SL,EOI三位可以定义多种不同的中断结束命令或优先级循环方式,其意义如表6.4所示。 OCW3 (A0 = 0,偶 地址端口) 其中D4、D3=01是OCW3的标志位。 ESMM是特殊屏蔽方式允许位,SMM是特殊屏蔽方式位。A0D7D6D5D4D3D2D1D00

32、ESMMSMM01PRRRISESMM SMM 功 能 0 无效 1 0 特殊屏蔽方式复位 1 1 特殊屏蔽方式置位 P,查询标志,=1查询8259A状态,=0不查询。当P=1时 查询当前是否有中断请求,以及在有中断时,当前正 在请求的中断最高优先级是哪一级。查询的中断状态 字(偶地址)格式如下: IR=0,无中断请求,=1有中断请求; W2、W1、W0表示当前正在请求的中断IRi是最高优先级, W2、W1、W0的编码是000-111对应IR0-IR7。 RR和RIS位在P= 0时才有效。 RR位是读寄存器命令,RIS位用于为读寄存器命令确定 读取的对象。A0D7D6D5D4D3D2D1D00

33、IRW2W1W0 P RR RIS 功 能 0 0 无效 0 1 0 下条读指令时,读取IRR(用偶地址) 0 1 1 下条读指令时,读取ISR(用偶地址) 如果CPU要读取IMR寄存器的内容,可随时通过读指令从奇地址端口读取,不需设置RR和RIS的状态。 例5:在BIOS中读取ISR寄存器的程序段是:MOVAL,0BH; OCW3表示要读ISR OUT20H,AL; OCW3口地址为20HNOPINAL,20H;读ISR寄存器内容MOVAH,AL;保存ISR内容到AHORAL,AH;是否为全0?JNZAW-INT;否,转硬件中断程序六、8259A应用举例例5:中断硬件实验(8259A) 直接

34、用手动开关产生单次脉冲作为中断请求信号,要求每按一次开关产生一次中断,在屏幕上显示一次“THIS IS A IRQ7 INTERRUPT!”,中断10次后返回。IRQ7的中断类型码是0FH。参考程序:DATASEGMENTMESS DB THIS IS A IRQ7 INTERRUPT!,0AH,0DH, $DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: movax, cs;置DS与CS一样,为什么?movds, ax;将中断服务程序的段地址送dsmovdx, offset INT7;中断服务程序的偏移地址送dxmoval, 0fH;0f是类

35、型号movah, 25H;置中断向量int21Hinal, 21H;读中断屏蔽andal, 7fH;开放IRQ7中断out21H, almovcx, 10 ;中断次数LL:jmpLL ;循环等待中断服务参考程序:INT7:movax, datamovds, axmovdx, offset MESSmovah, 09;显示提示信息int21Hmoval, 20H;发出普通EOI命令out20H, alloopnext ;次数减1inal, 21H;读中断屏蔽oral, 80H;关闭IRQ7中断out21H, alsti ;开中断movah, 4cH;返回DOSint21HNEXT: iretCO

36、DEENDSENDSTART例6:如图6.15所示,已知当前主8259A 上IR0和IR5引入两个中断请求,类型码为40H和45H;从8259A的IR2和IR3上也引入两个中断请求,类型码为32H和33H。已知类型码为40H和45H的中断服务程序在同一段中,段基址为1000H,偏移地址分别为1050H和2060H;类型码为32H和33H的中断服务程序也在同一段中,段基址为2000H,偏移地址分别为5440H和3620H。已知主8259A 的端口地址为E8H和E9H,从8259A的端口地址为FAH和FBH。试编写初始化程序。 要对主8259A初始化,对从8259A初始化,还要将四个中断向量写入到

37、中断向量表中。 参考程序如下:对主8259初始化: 标志 边沿触发 级联INITM:moval, 11H ;00010001 写ICW4movdx, 0E8H;端口地址E8Houtdx, al;定义ICW1moval, 40H;类型码40H-47Hmovdx, 0E9H ;端口地址E9Houtdx, al;定义ICW2moval, 08H;主8259的IR3上接从片outdx, al;定义ICW3moval, 11H; 00010001outdx, al;定义ICW4 特殊全嵌套 moval, 0D6H;中断屏蔽字11010110outdx, al;定义OCW1 IR0moval,20H ;普

38、通EOI IR3movdx, 0E8H IR5outdx, al;定义OCW2对从8259初始化:INITS: moval, 11Hmovdx, 0FAHoutdx, al;定义ICW1moval, 30H;类型码30H-37Hmovdx, 0FBHoutdx, al;定义ICW2moval, 03H;从8259outdx, al;定义ICW3moval, 11Houtdx, al;定义ICW4moval, 0f3Houtdx, al ;定义OCW1mov dx, 0FAHmoval, 20Houtdx, al ;定义OCW2写中断向量:SETV: mov ax, 2000H;段地址2000H

39、movds, axmovdx, 5440H ;偏移地址5440Hmoval, 32H;类型号32 Hmovah, 25H;设置类型号32 H中断向量int21Hmovdx, 3620H ;偏移地址3620Hmoval, 33H;类型号33 Hmovah, 25H;设置类型号33H中断向量int21Hmovax, 1000H ;段地址1000Hmovds, axmovdx, 1050H ;偏移地址1050Hmoval, 40H;类型号40 Hmovah, 25H; 设置类型号40H中断向量int21H movdx, 2060H ;偏移地址2060Hmoval, 45H;类型号45Hmovah, 25H ;设置类型号45H中断向量int21h 从8259: 2000:5440H ; 32H号中断 2000:3620H ; 33H号中断 主8259: 1000:1050H ; 40H号中断 1000:2060H ; 45H号中断

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号