ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:375.87KB ,
资源ID:8955417      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-8955417.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第七章 中断.docx)为本站会员(b****8)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

第七章 中断.docx

1、第七章 中断第七章 中断接口技术内容提要: 1中断的基本概念; 28086系统的中断源、矢量中断; 38259A的功能、结构特点、中断响应过程、编程; 48259 A的应用举例; 58259A编程实验。 学习目标: 1掌握8086内部中断的特点; 2掌握中断的基本概念,掌握对外部中断响应的区别; 3深刻理解中断类型码、中断矢量和中断向量表的概念,以及如何对中断服务程序寻址; 4了解8259A的编程结构,理解8259A工作方式、有关命令和初始化编程及其在PC机中应用。 难点:8259A工作方式、命令的理解。 学时:6 7.1. 概述一中断的基本概念 中断:是指CPU在正常运行程序时,由于内部或外

2、部事件引起CPU暂时中止执行现行程序,转去执行请求CPU为其服务的那个外设或事件的服务程序,待该服务程序执行完后又返回到被中止的程序这样一个过程。 中断源:能发出中断申请的外设或引起中断的原因。 中断源种类:I/O设备、数据通道、实时时钟、故障源、软件中断。 1. 为什么要用中断? 中断技术的优点: (1)并行操作:指CPU和多个外设并行操作;分时操作:指CPU可分时执行多个用户程序和多道作业; (2)实现实时处理; (3)故障处理。;(4)基本功能调用:在PC机中,通过软件中断可实现DOS功能调用和基本BIOS调用。 2. 中断类型 (1) 硬中断:也称为外部中断,它可分为两种: 一种是由中

3、断电路发生的中断请求信号在CPU的INTR端引起的中断,也称可屏蔽中断。 可屏蔽中断:凡是微处理器内部能够屏蔽(IF=0)的中断。 另一种是CPU的NMI端引起的中断,也称不可屏蔽中断。 不可屏蔽中断:凡是微处理器内部不能够屏蔽(不受IF状态影响)的中断。 (2)软件中断: 也称内部中断,是指程序中使用INT指令引起的中断。 3. 中断系统的功能 中断系统是指实现中断而设置的各种硬件与软件,包括中断控制逻辑及相应管理中断的指令。 中断系统应具有以下功能: (1)实现中断请求的检测、中断响应、中断服务与返回; (2)能实现中断优先级排队; (3)能实现中断嵌套。 二中断的处理过程 大致可分为:中

4、断请求、中断响应(关中断、保护断点、查找中断源等)、保护现场、开中断、返回五步。 (1)中断请求 CPU外部必须设置一个中断请求触发器锁存中断请求信号,以便CPU在现行指令周期结束时采样,还可设置中断屏蔽触发器。见下图。 (2)中断响应 中断响应的条件:1 有中断请求;2 外设中断没有被屏蔽;3 CPU允许中断;4 当前指令执行完。不可屏蔽中断申请:CPU执行完当前指令后就响应; CPU响应中断要自动完成下列几步操作: 发中断响应信号 ,同时内部关中断(IF0),以禁止其它可屏蔽中断请求; 把F以及程序断点处的CS、IP内容压栈,以便中断处理完后能正确地返回主程序; 中断服务程序入口地址段地址

5、CS ,偏移地址IP。 (3)中断处理程序员需在中断服务程序中,做以下事: 关中断 ;2 保护断点 ;3 识别中断源:查询中断,向量中断;4 保护现场;5 执行中断服务程序; 6 恢复现场; 7 开中断;8 返回。 中断返回指令使得CPU自动地将堆栈中保存的F和程序断点处的CS、IP值弹到F、CS、IP中,使CPU返回主程序断点处继续执行主程序,同时中断返回指令使得IF自动恢复响应中断前的开中断状态。 三中断优先级当系统中有多个中断源时,需要考虑优先权问题,即确定CPU首先为哪个中断源服务,以及服务的次序。优先权:根据中断源要求的轻重缓急,排好中断处理的优先次序,即优先级。当CPU正在处理中断

6、时,也能响应优先级更高的中断请求,而屏蔽掉同级或较低级的中断请求,即所谓多重中断的问题。确定中断源的优先权一般采用以下方法:1软件查询优先方式:是最简单的中断优先处理方式,8个外设中断请求组合起来,作为一个端口,赋以设备号,接口电路见P265图7-4。把各个外设的中断请求信号相“或”后,作为INT信号,这样任何一外设有中断请求都可以向CPU发出INT信号。CPU响应中断后,把中断寄存器的状态作为一个外设信息读入CPU,逐位检测其状态,若检测出某位有中断则转入响应的中断服务程序入口。优点:不需要有判断优先级的硬件排队电路。缺点:在中断源较多的情况下,由询问跳到相应的中断服务程序的入口时间长。2硬

7、件优先权排队电路:实现硬件查询的优先级中断链电路接口电路见P266图7-5。来自CPU的中断响应信号从A设备开始串行地往下传送:当A设备有“中断请求”时,则“中断响应”信号在门A2处被封锁,不再下传,使后面的设备得不到CPU的“中断请求”信号。同时A设备的“数据允许”线EN变为有效,允许A设备使用数据总线,将其中断标志放上数据总线进入CPU。 当A设备无“中断请求”时,“中断响应”信号可以通过A2门传给下一个设备B。3中断优先级编码电路:用硬件编码器和比较器组成的中断优先级排队电路见教材P267图7-6所示。四中断的嵌套1 中断嵌套的定义2 中断嵌套与单级中断的区别:(1) 加如屏蔽本级和较低

8、级别中断请求环节;(2) 在中断服务前要开放中断;(3) 中断服务结束之后,为了使恢复现场过程不受到任何中断请求的干扰,必须执行关中断指令,然后才能恢复现场;(4) 恢复现场后,应该执行开中断指令,以便允许任何其他的等待着的中断请求有可能被CPU响应。只有在执行完开中断指令后面的一条指令后,中断才被开放。7.2. 8086/8088中断系统一. 8086系统的中断源 8086CPU总共允许有256级中断,按产生的原因,系统有如下中断源: 二外部中断1不可屏蔽中断NMI 边沿触发,正跳沿有效,此类中断不受中断允许标志位的限制,也不能用软件进行屏蔽。当NMI端有一个上升沿触发信号时,CPU就会在结

9、束当前指令后,自动从中断向量表中找到类型2中断服务程序的入口地址,并转去执行。NMI是一种比INTR优先级高的中断请求。 2可屏蔽中断INTR 电平触发,高电平有效,该信号若为高电平,表示I/O设备向CPU发出中断申请,若IF=1,CPU允许中断,就会在结束当前指令后响应该外设的中断请求,进入可屏蔽中断的处理程序。 三内部中断内部中断是通过软件指令或软件陷阱而调用的非屏蔽中断(指不受IF状态影响),这是由程序运行的状态和指令代码执行后自动启动而不是由外界中断请求来调用的。 内部中断按其性质又可分为软件陷阱和软件中断。软件陷阱是指:在某些指令执行期间FR的标志位满足设定的条件或CPU的状态符合某

10、种情况从而触发CPU内部逻辑去启动所需要的中断服务子程序,如除法出错中断和单步中断。软件中断是指通过指令来调用中断服务子程序。 类型:8086的内部中断有溢出中断、除法错中断、断点中断、软中断及单步中断。 1除法溢出中断 当除数为0或除法结果商超出规定存放范围时,此时将自动产生类型号为0的内部中断。注意点:没有对应的中断指令。 2溢出中断 溢出中断是通过INTO中断指令实现的。该指令跟在有符号数的算术运算指令以后,当在程序执行过程中,遇到INTO指令,且此时溢出标志OF=1时,则产生一个中断类型为4的中断,并转入溢出中断处理。 例:MOV BL,126 MOV AL,5 ADD AL,BL 执

11、行到此指令后只能将OF置1 INTO 执行到此产生中断 3软中断 是系统以软中断指令INT n方式实现的,n为中断类型号,5n255,04中断类型号作为专用中断的类型号,不允许用户修改; 53FH为系统备用中断,一般不允许用户改作其它用途,并且其中许多中断已被系统开发使用,如10H1FH为ROMBIOS,21H为DOS功能调用,40HFFH为用户可用的中断,用户可用INT n使用,也可作为可屏蔽中断的类型号。 4单步中断 为了用户调试上机方便,当TF=1时,则每执行一条指令后,可以产生一个类型号为1的中断。 在中断处理程序的控制下,可以给出有关寄存器的内容或状态标志位的状态,以便了解程序的执行

12、情况。 5断点中断 断点中断也是提供给用户的一种程序调试手段。在相应的程序语句后设置断点,就可以分段落调试程序,从而避免单步调试的冗长和繁琐。 设置断点,实际上就是在用户程序的指定点(即对应的某一个存储单元,该单元一定是某条指令的第一个字节存储单元)用单字节的中断指令INT 3来代替程序中原有指令的第一个字节代码(操作码),同时把原有指令第一个字节操作码保存起来。 当执行到断点位置时,就会执行中断指令INT 3,进入类型码为3的中断服务子程序,显示一系列寄存器值和一些重要信息,供用户判断。 断点中断返回前,中断服务程序还负责恢复设置断点时原程序中被INT 3指令所替换的原来指令的第一个字节的操

13、作码。然后修改断点地址,返回主程序再从被恢复的那条指令继续执行。6内部中断的特点:(1) 中断类型码或者包含在指令中,或者是预先规定的;(2) 不执行INTA总线周期;(3) 除单步中断外,任何内部中断都无法禁止;(4) 除单步中断外,任何内部中断的优先级都比任何外部中断的优先级高。7中断优先级见P272表7-1所示。四 中断矢量表 定义:将所有的中断处理程序的入口地址都集中在一起,构成一个中断矢量表。 特点:每个入口地址占4个字节,高地址的2个字节单元存放中断处理程序的段地址,低地址的2个字节单元存放中断处理程序的段内偏移地址。 8086/8088的中断向量表结构如教材P272的图7-10。

14、例:设某中断源的类型码为13H,该中断源的中断服务程序的入口地址为FF00H:2200H,试画出中断矢量表。 解:n=13,则4n=13H*4=4CH 中断矢量表如下:当中断类型码为n时,则中断向量表指针为4n,则有:五中断类型号的获取(两种情况) 对于系统专用中断,系统将自动提供04中断类型号,(溢出中断需在算术运算指令之后执行INT O指令,断点中断需执行INT 3指令)从而能自动转到中断处理程序中去; 对于可屏蔽中断INTR,则需外接接口电路。目前主要是利用8259A中断控制器来产生外设的中断类型号。 六8086中断处理流程 1 CPU在获得中断类型号后,先自动将标志寄存器入栈,并自动将

15、IF和TF清零; 2然后自动将当前代码段寄存器CS和指令指针寄存器IP内容入栈,并根据中断类型号n从中断矢量表中取出中断处理程序的段地址送入CS; 再从中断矢量表中取中断处理程序的偏移地址值送入IP,从而实现向中断处理程序的转移; 3在中断处理程序完成后,用中断返回指令IRET恢复断点,从栈中弹回断点的偏移量和段地址值到IP和CS中,并恢复FR的内容,从而实现了向被中断程序的返回。 注意点:在处理程序的开始用开中断指令打开中断,以便实现中断嵌套。 7.3.可编程中断控制器8259A 主要功能: 具有8级中断优先级控制,通过级连可扩展至64级中断优先级控制; 每一级中断都可以屏蔽或允许; 在中断

16、响应总线周期,8259A可提供相应的中断类型码; 有多种中断管理方式,可通过编程选择。 一8259A的内部结构与功能1 8259A的内部结构由上图可见8259A有8个基本组成部分:(1)中断请求寄存器IRR 8位,每一位对应一个I/O设备,用来记录发生中断请求的外设。当某一外设(I/O设备)发出中断请求信号IRQ时,对应位被置“1”。简言之:用来存放要请求服务的所有中断请求信号。 (2)中断服务寄存器ISR 8位,用来存放正在被服务,包括尚未服务完毕而中途被别的中断打断了的所有中断级。 (3)优先权判决电路PR 用来识别各中断请求信号的优先级别。当多个中断请求信号同时产生时,由判优电路判定哪一

17、个中断请求具有最高优先权,若有中断正在被服务,则还需与ISR的当前中断服务优先级相比较,以决定是否将8259A的中断申请线INT上升为高电平。 (4)中断屏蔽寄存器IMR 8位,对IRR起屏蔽作用,屏蔽位仅对对应的中断请求起作用。 (5)控制逻辑 用于向8259A内部其它部件发控制信号,外部向CPU发INT信号,接收CPU发来的 信号,控制8259A进入中断服务状态。 控制逻辑是8259A全部功能的核心,包括一组方式控制字寄存器和一组操作命令字寄存器,以及相关的控制电路。 (6)数据总线缓冲器 8位双向三态缓冲器,是8259A与CPU之间数据接口。当CPU对8259A进行读操作时,数据总线缓冲

18、器用来传输从8259A内部读至CPU的数据/状态信息和中断类型码,写操作时由CPU向8259A内部写入控制命令字。 (7)读/写控制逻辑 用于控制对8259A的读、写操作。 控制信号有: 、 、 、A0共同控制,完成规定的操作。 8259A芯片内可写的寄存器有:各种命令寄存器,可读的寄存器有:IRR、ISR、IMR等状态寄存器。 (8)级连缓冲器 多片8259A可级连使用,最多可以组成64级中断优先级控制,此时一片8259A作主片,另外18片作从片,主从片的CAS0CAS2并接在一起,作为级连总线。 在中断响应过程中,主片的CAS0CAS2为输出线,从片的CAS0CAS2为输入线。在第一个 负

19、脉冲结束时,主片把被响应的中断请求的从片编码送入CAS0CAS2级连总线。从片接收后,将主片送来的编码与自己的编码相比较,若相同,表明从片被选中,则在第二个中断响应总线周期把中断类型码送至D7D0,供CPU读取。 见下图。28259A的中断优先级管理方式(1)完全嵌套方式:8259A最常用和最基本的一种工作方式,按固定优先级别来管理中断的方式。(2)自动循环方式:适用于系统中多个中断源的优先级相等的情况。中断源的优先级别将随着中断响应过程的结束而改变的中断优先权管理方式。(3)特殊循环方式:用于中断源的优先权需要任意改变的情况。通过在主程序或中断服务程序中发出特殊循环方式操作命令来指定某个中断

20、源的优先级别为最低级,而其余中断源的优先级别也随着循环变化的中断优先管理方式。(4)特殊屏蔽方式:可使优先级低的中断也能得到响应。(5) 查询排序方法: 用软件查询的方式来响应与8259A相连接的8级中断请求,此时8259A的INT引脚可不连接到CPU的INTR引脚,或者CPU正在处于关中断,所以CPU必须不能响应从8259A来的中断请求。CPU若要了解有无中断请求,必须先用操作命令字发查询命令到8259A,然后再用输入指令读取IRR寄存器的状态,并识别当前有无中断请求及优先级最高的中断请求。 38259A中断结束方式:中断请求被CPU响应时,8259A中的中断服务寄存器ISR中的对应的位被置

21、“1”,表示CPU正在执行ISX为1的中断服务程序,要求在中断服务程序中或末尾通过适当的手段将正在执行的ISX位清“0”。有两种清“0”的方法:在中断服务程序结束之前向8259A发出EOI命令;在第二个响应信号的后沿之后由8259A自动清除。(1)EOI命令方式在中断服务程序末尾向8259A发出中断结束命令,清除ISR中的相关位,表示中断服务程序已经结束。普通EOI命令:自动清除ISR中所有已经置位的优先级最高的那一位,适用于完全嵌套方式的中断结束,因为此时正在服务的中断源必定是优先级最高的。特殊EOI命令:适用于不工作在完全嵌套方式的中断结束,因为此时ISR中的优先级最高的那一位不一定就是正

22、在服务的中断级别,因而必须采用特殊EOI命令。(2)自动EOI方式采用此方式时,在第二个响应信号的后沿由8259A自动执行普通EOI操作,复位ISR中已经置位的优先级最高的位。4. 8259A的芯片引脚 见下图。 (1):片选信号,输入,低电平有效,当 =0时,8259A被选中。 (2)、 :读、写命令信号,输入。 D7D0 0 1 0 CPU写命令控制字到8259A 0 0 1 CPU从8259A读状态字/数据/中断类型码 (3)D7D0:8位双向三态数据总线,传送命令控制字、状态字和中断类型码和数据。 (4)IR7IR0:8根中断请求输入线。 (5)INT:中断请求输出线。 (6):CPU

23、发给8259A的中断响应信号,输入,低电平有效。 (7)A0:片内地址选择输入线,8259A有两个I/O端口地址。 (8)CAS0CAS2:级连线,8259A单片使用时无效。 采用级连方式时,作为主片的8259A,它们是输出线;作为从片的8259A,它们是输入线。 (9)/ :级连/允许缓冲信号,双向,低电平有效。 在缓冲方式中,该引脚为输出线,控制数据总线缓冲器的接收或发送,作 用,级联时主从片由ICW4的M/S位确定;当8259A工作于非缓冲方式时,该引脚为输入线 ,当 =1的是主片, =0的是从片。 (10)INT:中断请求信号,输出,高电平有效。 (11)IR0IR7:外设中断请求输入

24、端,高电平有效。从IR0IR7上输入的中断请求信号被命名为IRQ0IRQ7。 (12)Vcc、GND:+5V电源和地线。 5、8259A的中断响应过程(顺序) 1. 当中断请求线(IR0IR7)上有一条或若干条变为高电平,则使IRR的相应的位置1; 2. 当IRR的某一位或若干位被置1后,若IMR中相应的位为1,则屏蔽该中断请求,若IMR中相应位为0,则中断请求送PR; 3. PR把接到的中断请求的最高优先级与ISR中在服务中断级比较,若前者级别高于后者,或CPU不在服务中,则置INT为高电平,否则INT低电平; 4. CPU采样到INT为高后,响应中断进入连续的两个可屏蔽中断响应周期; 5.

25、 8259A接到第一个 负脉冲后,将对应的ISR位置位,而相应的IRR被复位; 6. 8259A接到第二个 负脉冲后(第二个中断响应周期),在该脉冲期间,8259A向CPU发出中断类型码。 7. 若8259A处于AEOI(自动中断结束)方式,则第二个 负脉冲结束时,相应的ISR位被复位。否则(工作在非自动中断结束方式)要等到CPU向8259A送内含中断结束(EOI)命令的OCW2后,相应的ISR位才被复位。 至此,CPU根据中断类型码,从中断矢量表中获取对应的中断服务程序入口地址进入中断服务。 二8259A的初始化命令字及其编程 在8259A开始正常工作之前,必须用初始化命令字建立起8259A

26、操作的初始状态。 8259A的初始化是通过CPU对8259A送4个方式控制字ICW1、ICW2、ICW3、ICW4以及3个操作命令字OCW1、OCW2和OCW3。 由于8259A只占用两个I/O端口地址,但要写入四个方式控制字和三个操作命令字,因而其各寄存器的读写是I/O地址和特征位及顺序配合完成的:写入方式控制字必须按照ICW1ICW4的顺序进行。 1. 初始化命令字:有ICW1ICW4四个。 ICW1 写入条件: =0、A0=0、特征位的D4=1。 各位作用: D0:D0=1,要写ICW4;D0=0,不需要写ICW4,对于8086CPU,要写ICW4; D1:D1=1,单片方式; D1=0

27、,级连方式; D3:D3=1,中断请求输入线IR0IR7为高电平有效的电平触发方式;D3=0,中断请求输入线IR0IR7为上升沿有效的边沿触发方式; D2、D5D7:8086CPU系统无意义,可全写“0”。 ICW2 写入条件:跟在ICW1之后, =0、A0=1。 各位作用: D7D3:规定中断类型码的高五位(T7T3); D2D0:无意义,可全写0。 注意点:中断类型码的低3位由IR0IR7的下标编码确定。 ICW3 写入条件:跟在ICW2之后, =0、A0=1且ICW1的D1=0,使用在级连方式。 主8259A ICW3各位作用:若某个IR上接有8259A,则对应的位写“1”,否则写“0”

28、。 从8259A ICW3各位作用:D2D1D0:表示接入主8259A的IR端的编码; D7D3:无意义。 注意点:主片和从片的ICW3必须不同。 ICW4 写入条件:跟在ICW2之后(若无ICW3)或者跟在ICW3之后(若有ICW3),特征位D7D5均为0, =0、A0=1且ICW1的D0=1。 各位作用: D4:D4=1,特殊完全嵌套方式,一般作为级联时主片的方式,工作在该方式时与工作在一般完全嵌套方式仅一点不同:在中断处理过程中,对优先级相等的同级中断也给予响应,能实现同级中断嵌套; D4=0,一般完全嵌套方式,一般作为级联时从片的方式,或单片使用时的方式; D3:D3=1,缓冲方式,是

29、指8259A和DB之间需加一缓冲器(提高DB带负载能力),此时 / 作为输出线 ,用以锁存或开启缓冲器; D3=0,非缓冲方式, / 作为主从片选择 。 D2:D2=1,在D3=1时(缓冲方式),主片; D2=0,在D3=1时(缓冲方式),从片。 在D3=0时,D2无意义。 D1:D1=1,自动中断结束方式(AEOI); D1=0:非自动中断结束方式。 D0:D0=1,8259A用于80X86CPU系统; D0=0,8259A用于非80X86CPU系统。 ICW1ICW4写入8259A后,IR0IR7优先级固定不变,优先级由高到低的顺序依次是:IR0、IR1、IR2、IR7,清零ISR、IMR

30、,处于普通屏蔽方式,对A0=0的端口地址执行读操作时,读取的是IRR的状态。 2. 操作命令字 有OCW1、OCW2、OCW3三个,可随时动态写入,没有顺序,需写什么就写什么。 OCW1(A0=1) 用于实现中断屏蔽,也称屏蔽操作字,各位分别对应于IR0IR7。被写入8259A中断屏蔽寄存器IMR中。 各位作用:为1,屏蔽对应的中断请求; 为0,不屏蔽对应的中断请求。 OCW2(A0=0) 用于控制中断结束、优先权循环等。 写入条件:A0=0并且特征位D4D3=00。 各位作用: D7:D7=1,中断优先顺序是循环轮换的,工作在循环优先级; D7=0,中断优先顺序是固定不变的,工作在固定优先级。 D6:D6=1,D2D0位将指明一个中断级; D6=0,D2D0位无意义。 D5:D5=1,执行中断结束操作,(用于非自动中断结束方式)用作中断结束命令EOI, 8259A接到中断结束命令后,将ISR中对应的或指定的置1位清0; D5=0,不执行中断结束操作。 D2D0:(D6=1才有意义)指

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2