欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    第六章中断系统.ppt

    • 资源ID:3123840       资源大小:993.52KB        全文页数:68页
    • 资源格式: PPT        下载积分:8
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要8
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第六章中断系统.ppt

    第六章 中断系统,第一节 基本概念,一、中断 1、中断的定义 当CPU正常运行时,由于随机事件(内部或外部)引 起CPU暂时中止正在运行的程序,转去执行请求中断的外 设(或内部事件)的中断服务程序,中断服务程序结束后 再返回被中止的程序,这一过程称为中断。 2、中断源和中断请求 能够向CPU发出中断请求的中断来源称为中断源。I/O设 备(CRT、打印机等)、数据设备(磁盘、磁带等)、实 时时钟、故障信号、软件中断等都是中断源。 中断源能发出中断请求信号到CPU,所以中断源中一般 要求有中断请求触发器,请求信号有边沿请求和电平请求 两种。,3、中断系统的目的 维持系统正常工作,提高系统效率; 实时处理; 为故障处理作准备。 4、中断分类 中断分外部中断和内部中断两大类;其中外部 中断分为两类: 可屏蔽中断INTR,由标志寄存器中的 IF位 控制; 不可屏蔽中断NMI,不受IF位控制。 5、中断系统功能 中断处理:发现中断请求、响应中断请求、 执行中断服务程序、中断返回。, 中断控制:中断优先权排队、中断嵌套 当系统中有多个中断时,有可能出现两个或两 个以上的中断源同时提出中断请求,这时要求 CPU根据中断优先权由高到低依次处理。 中断嵌套如图6.1所示。假定有两个中断源A和 B,A的级别高于B,当CPU正在处理B中断时, 允许A能中断B的中断处理,转去执行A的中断服 务程序,在高级中断A处理完后,返回到原来打 断处,继续处理B的中断服务程序。图中为两级 中断,还可以进行多级中断。,图6.1中断嵌套示意图,二、中断处理过程 1、中断检测 中断源向CPU发中断请求是随机的,大多数CPU在现 行指令周期结束时检测有无中断请求。8086CPU在每条指 令的最后一个机器周期的最后一个时钟周期检测中断请求 信号输入线INTR。 2、CPU响应中断的条件 CPU检测到INTR上有中断请求,要响应它需满足以下 条件: CPU开放中断,即CPU内部设置的中断允许触发器=1 ,此触发器可用开中断指令(STI)置1,用关中断指令(CLI) 清0。实际上就是标志寄存器中的IF位=1,表示开放可屏蔽 中断。参见图6.2。 CPU在现行指令结束后响应中断,图6.2 CPU内设置中断允许触发器IFF 3、中断请求与中断屏蔽触发器 图6.3是具有中断请求与中断屏蔽的接口电路。每一个中断源都有一个中断请求触发器和一个中断屏蔽触发器。只有当该中断源不屏蔽时,它的中断请求信号才能发给CPU。,图6.3 具有中断请求与中断屏蔽的接口电路,3、CPU响应中断及处理过程 满足上述条件后,CPU响应中断,转入中断周期,完 成以下操作,其时序如图6.4所示。 关中断:CPU响应中断时,发出中断响应信号INTA ,同时内部自动地关中断(IF=0),以禁止接受其他的中 断请求,以免破坏当前中断服务的现场。 保留断点:把断点处的指令指针IP值和CS值压入堆 栈,以便中断处理完成后正确地返回主程序断点。 识别中断源:识别中断源一般有查询和向量中断(类 型号)两种方法。 保护现场:把断点处的有关寄存器内容压入堆栈。 中断服务:执行中断服务程序,图6.4 中断时序流程图,图6.5 中断响应服务 及返回流程图, 恢复现场:将压入堆栈的有关寄存器的内容弹出。 开中断:在中断服务的最后要开中断,以便CPU能 响应新的中断请求。 如果实现中断嵌套,可以在中断服务程序中,在适当 时候重新开放中断,以便允许响应较高级的中断。 中断返回:将堆栈内的断点值弹出。上述过程如图 6.5所示。 三、中断优先级和中断嵌套 1、中断优先级:中断优先级一般采用软件查询或硬件 中断优先级编码电路。 2、中断嵌套:当CPU执行优先级较低的中断服务时, 而允许响应比它优先级高的中断请求,而将正在处理的 中断暂时挂起,这就是中断嵌套。,第二节 8086/8088的中断系统,一、中断分类 8086/8088的中断系统如图6.6所示。 1、外部中断 8086/8088CPU有两条引脚提供外部中断源请求中断:一 条是高电平有效的可屏蔽中断INTR;另一条是正跳变有效 的非屏蔽中断NMI。外部中断又称硬件中断。 可屏蔽中断:可屏蔽中断是由用户定义的外部硬件中断 ,受中断标志位IF的控制。 非屏蔽中断:不受中断标志位IF的控制。,图6.6 8086/8088的中断系统,TF=1,硬件中断,软件中断,2、内部中断 内部中断又称软件中断,主要来自CPU内部的软 件中断。 图6.6中,上部是外部的硬件中断;下部是内部 的软件中断。 二、中断向量表 1、中断向量的定义 所谓中断向量实际上就是中断服务程序的入口地 址。每个中断类型号对应一个中断向量。中断向量 占4个字节存储单元,其中前两个字节放中断向量 的偏移地址(IP),且低字节在前,高字节在后;后 两个字节放中断向量的段地址(CS),也是低字节 在前,高字节在后。,2、中断向量表 存放中断向量的存储区称为中断向量表。通 常在存储器的低地址区。 3、8086/8088的中断向量表 8086/8088有256种中断类型,类型号为0-255 (或0-FFH),共有256个中断向量,每个占4个 存储单元,所以需要1024个字节,在存储器的最 低端,地址从00000H-003FFH,这块地址空间就 是中断向量表。 如图6.7所示。,图6. 7 8086/8088中断向量表,从表中,知道了中断类型号,便可计算出相应的中断向量 在表中存放的位置,称为中断向量表地址,或称为中断向量 指针。从中断向量表地址中取出中断向量,便得到了该中断 类型号的中断服务程序入口地址。即 中断类型号×4 = 中断向量指针的低地址 中断类型号×4+2 = 中断向量指针的高地址 (中断向量指针的低地址) (IP) (中断向量指针的高地址) (CS) 例1:中断类型号为27H 则中断向量指针的低地址= 27H ×4= 9CH 中断向量指针的高地址= 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):这是Intel公司 为软件、硬件开发保留的中断类型,大部分用于 系统中断,如20H-3FH为DOS中断调用。 供用户定义的中断(类型号40H-FFH):使用 用户自己定义的中断,用户必须把该中断的中断 向量填写到中断向量表中。 填写方法有两种: 用指令填写,例2:为中断类型N设置中断向量,该中断的中断服务程 序的符号地址是INTHAND。 mov ax, 0 mov es, ax ;中断向量表的段地址 mov bx, N*4 ;中断向量表的偏移地址 mov ax, offset INTHAND ;得到INTHAND的偏 移地址 mov ES:word PTRbx, ax ;放到中断向量表中 mov ax, seg INTHAND ;得到INTHAND的段 地址 mov ES:word PTRbx+2, ax;放到中断向量表中 INTHAND: ;中断服务处理程序 IRET, 用DOS功能调用来设置中断向量 、设置中断向量 入口参数: AH=25H AL=类型号 DS:DX=中断向量 执行 INT 21H 、取中断向量 入口参数: AH=35H AL=类型号 执行 INT 21H 返回时ES:BX=中断向量,例3:使用DOS功能调用存取中断向量 mov al, N mov ah, 35H ;取原中断向量 int 21H push es ;保存原中断向量的段地址 push bx ;保存原中断向量的偏移地址 push ds mov ax, seg INTHAND ;得到INTHAND的段地址 mov ds, ax mov dx, offset INTHAND;得到INTHAND的偏移地址 mov al, N ;类型号,mov ah, 25H ;设置中断向量 int 21H pop ds pop dx ;恢复原中断向量 pop ds ; mov al, N ;将原中断向量写回去 mov ah, 25H ; int 21H ret INTHAND: iret,三、外部中断 1、非屏蔽中断(NMI):不受中断标志位的控制,中 断类型号为2,所以中断向量放在0000:0008开始的4个 单元中。NMI中断一般用于紧急情况的处理。 2、可屏蔽中断(INTR):受中断标志位的控制,IF =1,CPU才能响应INTR中断。CPU响应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要读 取中断类型码,然后进入所有中断都要做的事。 将标志寄存器FR的内容压入堆栈 将中断允许标志IF和单步标志TF清零 将断点保护到堆栈中。所谓断点就是指响应中断时,主程 序中当前指令下面的一条指令的段寄存器CS的值和指令指针寄 存器IP的值压入堆栈,先压CS,再压IP的值。 根据当前中断的中断类型码查中断向量表,得到中断向量 (中断服务程序入口地址)分别装入CS和IP,从而转到相应的 中断服务程序。 执行中断服务程序,结束后恢复断点,从而继续执行原来 的程序。, 图中在得到中断服务程序入口地址后,查看NMI是否有,接 着查看TEMP,若TEMP=1,则在中断前CPU已处于单步方式, 就和NMI一样重新保护现场和断点,转入单步中断服务程序。 若TEMP=0,即中断前CPU处于非单步方式,则CPU转去执行最 先引起中断的中断服务程序。 最后举一个例说明中断操作过程。 例4:某中断类型号为72H,图6.10示出了中断操作过程。 取中断类型号72H; 计算中断向量地址72H×4=1C8H; 72H×4+2=1CAH; 取中断服务程序入口地址的偏移量送IP,IP=2050H, 段地址送CS,CS=A000H; 转入中断服务程序A000H:2050H; 中断返回到INT 72H指令的下一条指令MOV AX , BX。,六、可屏蔽中断的过程 1、INTR中断的全过程 首先中断请求信号INTR由外部设备产生,并送到8086的INTR 引脚上。 如果IF=1,则在CPU完成正在执行的指令后,便开始响应中 断,步骤如下: CPU读取中断类型号n。CPU 通过INTA发中断响应信号给接 口,并启动中断过程。这个响应信号将使发中断请求的接口把一 个字节的中断类型号通过数据总线送给CPU; 按先后顺序把PSW(即FR)、CS和IP压入堆栈; 清除IF和TF标志; 把4×n +2的字存储单元中的内容读入 CS中,把4×n 的字存 储单元中的内容读入 IP中,即得到中断向量; CPU 从新的CS:IP值开始执行中断服务程序,,若允许中断嵌套,则一般在中断服务程序中保存寄存器 后,就安排一条STI指令,以便响应优先权较高的中断。 在中断服务程序末尾安排一条IRET返回指令。 至于不可屏蔽NMI中断,与上述操作基本类似,只是不需 要读取中断类型码,因为它的中断类型码由CPU内部自动产 生。 2、中断类型号的获得 除法错误,单步中断,非屏蔽中断。断点中断和溢出中 断分别由CPU内部自动提供中断类型号(0-4)。 软件中断则是从指令流中,即在第2个字节中读得中断 类型号。 外部中断INTR可以用不同的方法获得中断类型号,通 常由硬件提供,如8259A芯片可以将中断类型号送到数据总 线上,由CPU读取而获得。,七、中断服务子程序的设计 设计中断服务子程序的步骤如下: (1)选择一个中断矢量。如果是硬件中断,则要使用硬件 决定的中断矢量。如果是采用软件中断,即用INT n指令的方 式,则可在系统保留给用户的中断矢量号中选一个中断矢量。 例如选50H号中断矢量。 (2)将中断子程序的入口地址置入中断矢量表的相应表项 中,其置入方法有两种: 一种是用数据传送指令将中断服务子程序的入口的偏移地 址放在中断矢量表4 × n的字单元中,将中断服务子程序的入口 的段地址放在中断矢量表4 × n+2的字单元中。 二是采用DOS功能调用,这在前面已讲过。 (3)编写中断服务子程序,第三节 可编程中断控制器8259A,8259A是一个可编程中断控制器,能控制8级向量中断, 通过级联方式(用9片8259A),最多可构成64级向量中 断系统。在8259A中能判断一个中断请求输入是否有效, 是否被屏蔽和进行优先级判决,并在CPU响应中断后, 将中断类型码发给CPU。 一、 8259A的引脚 如图6.11所示,它有28个引脚,为标准芯片,即左下角 为地,右上角为电源。,二、8259A的内部结构,1、数据总线缓冲器 2、读写控制电路,一片8259A只占用两个端口地址,由 A0来选择,其它高位地址译码输出作为片选信号CS。WR RD分别为写信号和读信号。 、级联缓冲器/比较器,扩充中断用。 、中断请求寄存器IRR,位寄存器,每一位对应IR0- IR7,某根线上有中断请求,则IRR中对应位置。 、中断服务寄存器ISR,CPU当前正处理的IRi中断请求 时,该寄存器i位置1(i = 0- 7)。 6、中断屏蔽寄存器IMR,当IMR的第i位为1时,禁止IRi来 的中断请求。 7、优先级判别器PR,当有多个中断同时请求中断时,判 别当前优先级最高的中断请求进入系统。 8、控制电路,控制芯片内个部件协调一致地工作。,三、8259A的工作方式 1、中断触发方式,电平触发方式或边沿触发方式(由 低到高的正跳变),利用初始化命令字ICW1来设置。 2、中断结束方式,中断请求处理结束时,需将ISR中 相应位清零。 自动中断结束方式(自动EOI方式),中断处理结束 时自动将ISR中相应位清零,只需将初始化命令字ICW4 中的AEOI置为1即可实现这种方式。 普通中断结束方式( 普通EOI方式) ,用在8259A的 全嵌套方式下,即在CPU处理完一个中断请求时需8259A 发送一个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依次降低。当 某一中断处理时,可响应比它高的中断,但禁止比它低 的或同级中断进入。当某一中断请求处理结束时,CPU 向8259A发送中断结束命令EOI,以使ISR中相应位清零。 特殊全嵌套方式:与的普通全嵌套方式差不多,,区别是CPU处理某一中断时,允许比它高的和与它同级 的中断请求进入,而只禁止比它低的中断请求。 自动循环方式(普通EOI循环方式) 在这种方式下,任何一级中断请求被处理完后, CPU 向8259A发送中断结束命令EOI,以使ISR中优先级最高 的置1位清零,并重新赋给它最低优先级,而将最高优先 级赋给比它低一级的中断请求,其它中断请求的优先级 则以循环方式类推。 特殊EOI循环方式,用户根据要求用置优先级命令指 定最低优先级,例如设置IRi为最低优先级,则最高优先 级为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级中断,它们以嵌套方式引入 系统。如果当前CPU正在执行优先级高的第2级中断服务 程序,用户在该中断服务程序中安排了一条优先权置位 命令,将最低级优先权赋给IR4,那么待这条指令执行完,,各中断源的优先级便发生变化,IR4具有最低优先级 ,但这时第2级中断服务程序并没有结束,因此ISR寄存 器中仍保持第2位和第6位置1,只是它们的优先级别已经 分别被改变为第5级和第1级,上述变化过程如表6.3所示。 4、中断屏蔽方式 普通屏蔽方式,将IMR中某一位或几位置1,则其对 应的中断被屏蔽(即这些中断被禁止)。 特殊屏蔽方式 一般情况处理一个中断时,禁止同级或低级中断进入, 但有些场合,在处理某个中断时,仅希望对本级屏蔽, 可以响应高级或低级中断,此时采用这种方式。 特殊屏蔽方式通过操作命令字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发送中断类型码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的标志; 地址 初始化命令字,IC4=0,表示不写ICW4,=1表示要写ICW4; SNGL=0,级联,=1单片,不写ICW3; ADI, 8086/8088中不用; LTIM=0,边沿触发,=1,电平触发。 ICW2(A0=1,奇地址端口) T7-T3是中断类型码的高5位,中断类型码的低3位由中 断进入的引脚决定(IR0-IR7依次为000-111); D2-D0位不用。,例如:ICW2=20H,则8259A的IR0-IR7的中断类型码依次 为20H、21H、27H。 ICW3, (A0=1,奇地址端口)只在级联方式时用。 对于主8259A, ICW3表示哪些IRi引脚接有从8259A, 接有从8259A的相应Si位置1,否则置0。 对于从8259A,ID2-ID0表示本8259A(即从8259A)接 在主8259A那一根IRi引脚上。 下图中包括一个主芯片和两个从芯片,共提供了22个 中断等级。,主8259A,8259A 从片A,8259A 从片B,例3:图6.14A中主片的IR3和IR6两个输入端分别连接了 从片A和B的INT。所以主片的ICW3 = 01001000B = 48H MOV AL,48H ;主片的ICW3 OUT 21H,AL 例4:图中从片A和B的请求线INT分别连到主片的IR3和 IR6 ,所以从片A的ICW3=00000011B=03H 从片B的ICW3=00000110B=06H 设从片A的端口地址为A1H(奇地址),则 MOV AL,03H ;从片A的ICW3 OUT 0A1H,AL 设从片B的端口地址为B1H (奇地址) ,则 MOV AL,06H ;从片B的ICW3 OUT 0B1H,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,是全嵌套,=1,是特 殊全嵌套。,2、操作命令字,有三个OCW1-OCW3,设置次序没有 规定先后,这点与ICW设置不同。 OCW1, (A0=1,奇地址端口) OCW1是中断屏蔽操作命令字,直接写入中断屏蔽寄存 器IMR。M0-M7对应IR0-IR7,其中Mi位=1,则该IRi位 屏蔽,即IRi线上的中断不被接收。 OCW2,用于设置优先级循环方式和中断结束方式。,D4、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是特殊屏蔽方式位。,ESMM 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位用于为读寄存器命令确定 读取的对象。,P RR RIS 功 能 0 0 × 无效 0 1 0 下条读指令时,读取IRR(用偶地址) 0 1 1 下条读指令时,读取ISR(用偶地址) 如果CPU要读取IMR寄存器的内容,可随时通过读指令 从奇地址端口读取,不需设置RR和RIS的状态。 例5:在BIOS中读取ISR寄存器的程序段是: MOV AL,0BH ; OCW3表示要读ISR OUT 20H,AL ; OCW3口地址为20H NOP IN AL,20H ;读ISR寄存器内容 MOV AH,AL ;保存ISR内容到AH OR AL,AH ;是否为全0? JNZ AW-INT ;否,转硬件中断程序,六、8259A应用举例,例5:中断硬件实验(8259A),直接用手动开关产生单次脉冲作为中断请求信号,要求每按一次开关 产生一次中断,在屏幕上显示一次“THIS IS A IRQ7 INTERRUPT!”,中断10次后返回。IRQ7的中断类型码是0FH。,参考程序: DATA SEGMENT MESS DB THIS IS A IRQ7 INTERRUPT!,0AH,0DH, $ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: mov ax, cs ;置DS与CS一样,为什么? mov ds, ax ;将中断服务程序的段地址送ds mov dx, offset INT7 ;中断服务程序的偏移地址送dx mov al, 0fH ;0f是类型号 mov ah, 25H ;置中断向量 int 21H in al, 21H ;读中断屏蔽 and al, 7fH ;开放IRQ7中断 out 21H, al mov cx, 10 ;中断次数 LL: jmp LL ;循环等待,中断服务参考程序: INT7: mov ax, data mov ds, ax mov dx, offset MESS mov ah, 09 ;显示提示信息 int 21H mov al, 20H ;发出普通EOI命令 out 20H, al loop next ;次数减1 in al, 21H ;读中断屏蔽 or al, 80H ;关闭IRQ7中断 out 21H, al sti ;开中断 mov ah, 4cH ;返回DOS int 21H NEXT: iret CODE ENDS END START,例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初始化,还要将四个 中断向量写入到中断向量表中。 参考程序如下:,对主8259初始化: 标志 边沿触发 级联 INITM:mov al, 11H ;00010001 写ICW4 mov dx, 0E8H ;端口地址E8H out dx, al ;定义ICW1 mov al, 40H ;类型码40H-47H mov dx, 0E9H ;端口地址E9H out dx, al ;定义ICW2 mov al, 08H ;主8259的IR3上接从片 out dx, al ;定义ICW3 mov al, 11H ; 00010001 out dx, al ;定义ICW4 特殊全嵌套 mov al, 0D6H ;中断屏蔽字11010110 out dx, al ;定义OCW1 IR0 mov al,20H ;普通EOI IR3 mov dx, 0E8H IR5 out dx, al ;定义OCW2,对从8259初始化: INITS: mov al, 11H mov dx, 0FAH out dx, al ;定义ICW1 mov al, 30H ;类型码30H-37H mov dx, 0FBH out dx, al ;定义ICW2 mov al, 03H ;从8259 out dx, al ;定义ICW3 mov al, 11H out dx, al ;定义ICW4 mov al, 0f3H out dx, al ;定义OCW1 mov dx, 0FAH mov al, 20H out dx, al ;定义OCW2,写中断向量: SETV: mov ax, 2000H ;段地址2000H mov ds, ax mov dx, 5440H ;偏移地址5440H mov al, 32H ;类型号32 H mov ah, 25H ;设置类型号32 H中断向量 int 21H mov dx, 3620H ;偏移地址3620H mov al, 33H ;类型号33 H mov ah, 25H ;设置类型号33H中断向量 int 21H mov ax, 1000H ;段地址1000H mov ds, ax mov dx, 1050H ;偏移地址1050H mov al, 40H ;类型号40 H,mov ah, 25H ; 设置类型号40H中断向量 int 21H mov dx, 2060H ;偏移地址2060H mov al, 45H ;类型号45H mov ah, 25H ;设置类型号45H中断向量 int 21h 从8259: 2000:5440H ; 32H号中断 2000:3620H ; 33H号中断 主8259: 1000:1050H ; 40H号中断 1000:2060H ; 45H号中断,

    注意事项

    本文(第六章中断系统.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开