微型计算机原理与接口技术第五版(中国科学技术大学出版社)第7章.ppt_第1页
微型计算机原理与接口技术第五版(中国科学技术大学出版社)第7章.ppt_第2页
微型计算机原理与接口技术第五版(中国科学技术大学出版社)第7章.ppt_第3页
微型计算机原理与接口技术第五版(中国科学技术大学出版社)第7章.ppt_第4页
微型计算机原理与接口技术第五版(中国科学技术大学出版社)第7章.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

第七章 微型计算机中断系统 7-1 概述 一、中断概念 当CPU正常运行程序时,由于微处理器 内部事件或外设请求,引起CPU中断正在运 行的程序,转去执行请求中断的外设(或内 部事件)的中断服务子程序,中断服务程序 执行完毕后,再返回被中止的程序,这一过 程称为中断。 1. 中断源 引起程序中断的事件称为中断源。中断 源有外部中断和内部中断,内部中断由程序 预先安排的中断指令(INT n)引起,或由 于CPU运算中产生的某些错误(如除法出错 、运算溢出)引起。外部中断是外部设备或 协处理器向CPU发出中断申请引起的。 2. 中断响应 中断请求何时发生是随机的。CPU在每 条指令的最后一个T周期去检测INTR引脚, CPU一旦检测到有中断请求,在满足中断响 应的条件下(IF=1),CPU响应中断,会向 外设发出中断响应信号。并保护断点(当前 CS、IP和PSW值 入栈),然后转向中断服 务程序。中断服务程序执行完毕,CPU返回 原执行程序的中断处,继续向下执行,称为 中断返回。 3. 中断向量表 CPU响应中断后,必须由中断源提供地 址信息,引导程序进入中断服务子程序,这 些中断服务子程序的入口地址存放在中断向 量表中。内存中专门开辟了一个区域,存放 中断向量表(也称中断矢量表)。 4. 中断优先级 当有多个中断源请求中断时,中断系统 判别中断申请的优先级,CPU响应优先级高 的中断,挂起优先级低的中断。当CPU在运 行中中断服务子程序时,又有新的更高优先 级的中断申请进入,CPU要挂起原中断进入 更高级的中断服务子程序,实现中断嵌套功 能。 5. 中断屏蔽 当中断源申请中断时,CPU可以由软件 设置,使之不能响应,称为中断屏蔽。 二、中断分类 8086/8088有一个强有力的中断系统, 可以处理256种不同的中断。 8086/8088系统 上的中断源如图7-1所示。 图7-1 8086/8088中断源 以产生中断的方法来分类,256种中断 可以分为两大类:外部中断和内部中断。 外部中断也称为硬件中断,是由外部的 硬件产生的,硬件中断又分成不可屏蔽中断 和可屏蔽中断。下面分别加以说明。 1. 外部中断 8086/8088 CPU有两个外部中断请求线 :不可屏蔽中断请求线NMI和可屏蔽中断请 求线INTR。 (1)由NMI引脚引入的不可屏蔽中断请求 ,采用边沿触发,上升沿之后维持两个时钟 周期高电平有效。对于不可屏蔽中断用户是 不能用软件来屏蔽的,一旦有不可屏蔽中断 请求,CPU必须予以响应。不可屏蔽中断请 求的中断类型号为2,即中断处理程序的入 口地址在0段的0008H000BH的4个单元中 。 (2)由INTR引脚引入的外设提出的可屏蔽 中断请求,采用电平触发,高电平有效, INTR信号的高电平必须维持到CPU响应中 断才结束。可屏蔽中断是用户可以通过软件 设置来屏蔽的外部中断,即使外部设备有中 断请求,CPU可以不予响应。 由外设引起的可屏蔽中断请求要得到响 应应有两个条件:外设中断请求是否被屏 蔽;CPU是否允许响应中断。 在8086 CPU系统中,外设的中断请求 信号接入可编程中断控制器8259A的IRi端, 而8259A的中断输出INT连到CPU的INTR引 脚上。8259A中设有中断屏蔽寄存器,它的8 位对应控制8个外设,通过设置这个寄存器 的某位为0或1,可以允许或禁止某个外设的 中断请求。一块8259A可管理8个中断,当外 设超过8个时,可以使用多个8259A进行级联 ,扩大到64级中断。外设与8259A的连接是 由用户来设计的,硬件连线决定了中断类型 号和中断优先级次序。 CPU是否允许响应中断,与中断允许位 IF有关。IF=1,CPU允许响应中断;IF=0, CPU禁止响应中断。 2. 内部中断 内部中断又称为软件中断。软件中断通 常有三种情况引起: 由中断指令INT引起的中断; 由CPU的某些运算错误引起的中断; 由调试程序debug设置的中断。 内部中断只要由上面三种情况引起了,是 不可屏蔽的! (1)由中断指令INT引起的中断 CPU执行一条INT n指令后立即产生中 断,并且调用系统中相应的中断处理程序去 完成中断功能,指令中的n指出了中断类型 号。 例7-1 测试存储器容量 INT 12H CPU执行这条指令时,立即产生一个 中断。并从中断向量表的0:12H4开始的 单元中取出4个字节,其内容为中断服务子 程序的段地址和偏移地址,然后转去此入口 去执行中断服务子程序,完成对存储器的测 试。 (2)由CPU的某些运算错误引起的中断 CPU在运行程序时,会发现一些运算中 出现的错误,此时CPU就会中断,让用户去 处理这些错误。主要有: 除法错中断:除法错中断类型号为0,在 除法运算中,若除数为0或商超过了寄存器 所能表达的范围,就产生一个类型号为0的 中断,转去类型号为0的中断处理。 溢出中断:溢出中断类型号为4,专用指 令为INTO。若OF=1执行中断指令INTO; 若OF=0,不执行中断指令。通常INTO放 在加、减法运算指令的后面。 例7-2 测试加法的溢出 ADD AX,BX INTO (3)由调试程序debug设置的中断 在调试程序时,为了检查中间结果或寻 找程序中的错误,在程序中可设置断点或进 行单步跟踪,调试程序debug有此功能它也是 由中断来实现的。 单步中断:单步是每次只执行一条指令, 然后屏幕显示当前各寄存器和有关存储单元 的内容,以及下条要执行的指令。这样逐条 运行指令,来跟踪程序的流程,以检查出程 序中的错误。单步中断是在标志位TF=1时, 每条指令执行后,CPU自动产生中断类型号 为1的中断。 断点中断:中断类型号为3。用debug调试 程序时,可用G命令设置断点。当CPU执行 到断点时便产生中断,同时显示当前各寄存 器和有关存储单元的内容,以及下条要执行 的指令,供用户检查。设置断点实际上是把 一条断点指令INT 3插入到断点设置处。 7-2 中断处理过程 可屏蔽中断处理的过程一般分成几步: 中断请求;中断响应;保护现场;转入中断 服务子程序;恢复现场和中断返回。其流程 如图7-2所示。 图7-2 可屏蔽中断处理流程图 一、CPU响应中断过程 CPU响应中断要有三个条件: 外设提出中断申请 本中断位未被屏蔽 中断允许 当中断接口电路中的中断屏蔽触发器未 被屏蔽时,外设可通过中断接口发出中断申 请。外设向CPU发出中断请求的时间是随机 的,而CPU在每条指令的最后一个机器周期 的最后一个T状态去采样中断请求输入线 INTR,当CPU在INTR引脚上接收到一个有 效的中断请求信号,而CPU内部的中断允许 触发器是开放的,则在当前指令执行完后 CPU响应中断。 CPU响应中断后,对外设接口发出两个 中断响应信号 ,第一个 信号通知 外设,CPU已响应申请的中断请求,准备发 送中断类型号;当外设收到第二个 以后 ,立即往数据线上给CPU送中断类型号。 CPU在响应外部中断,并转入相应中断服务 子程序的过程中,自动依次做以下工作: (1)从数据总线上读取中断类型号,将其存 入内部暂存器。 (2)将标志寄存器PSW的值入栈。 (3)将PSW中的中断允许标志IF和单步标 志TF清0,以屏蔽外部其它中断请求,和避 免CPU以单步方式执行中断处理子程序。 (4)保护断点,将当前指令下面一条指令的 段地址CS和指令指针IP的值入栈,使中断处 理完毕后,能正确返回到主程序继续执行。 (5)根据中断类型号到中断向量表中找到中 断向量,转入相应中断服务子程序。 (6)中断处理程序结束后,从堆栈中依次弹 出IP、CS和PSW,然后返回主程序断点处, 继续执行原来的程序。 对于不可屏蔽中断请求,不必判断IF是 否为1,也不是由外设接口给出中断类型号 ,从NMI引脚进入的中断请求规定其中断类 型号为2。在运行中断子程序过程中,若 NMI引脚上有不可屏蔽中断请求信号,CPU 仍能响应。 软件中断由程序设定,没有随机性,它 不受中断允许标志位IF的影响,中断类型号 由指令INT n中的n决定。正在执行软件中断 时,如果有不可屏蔽中断请求,就会在当前 指令执行完后立即予以响应。如果有可屏蔽 中断请求,并且IF=1,也会在当前指令执行 完后予以响应。 二、中断向量表 寻找中断源可以用查询中断及矢量中断 两种方法。 查询中断是采用软件查询方法,中断响 应后启动中断查询程序,依次查询哪个设备 的中断请求触发器为1,检测到后,转向此 设备预先设置的中断服务程序入口地址。此 方法较简单,但花费时间多,并且后面的设 备服务机会少,在8086系统中一般采用矢量 中断方法。 矢量中断是将每个设备的中断服务程序 的入口地址(矢量地址)集中,依次放在中 断向量表中。当CPU响应中断后,控制逻辑 根据外设提供的中断类型号查找中断向量表 ,然后将中断服务程序的入口地址送到CS 段寄存器和指令指针IP,CPU转入中断服务 子程序。这样大大加快了中断处理的速度。 1. 中断向量表 中断向量表又称中断服务程序入口地址 表。8086/8088系统允许处理256种类型的中 断,对应的中断类型号为0FFH在存储器 的00000H003FFH,占用1K字节空间,用 作存放中断向量。每个类型号占4个字节, 高2个字节存放中断入口地址的段地址,低2 个字节存放段内偏移地址,如图7-4所示。 图7-4 8086/8088中断向量表 各个中断处理程序的段地址和偏移地址 按中断类型号顺序存放在中断向量表中。因 此由中断类型号n4即可得到相应中断向量 的地址,取4n和4n+1单元中的内容(中断入 口程序偏移地址)装入指令指针IP,取4n+2 和4n+3单元中的内容(中断入口程序段地址 )装入代码段寄存器CS,即可转入中断处 理服务子程序。 例7-3 某中断的中断类型号为68H,图7-5图 示了中断操作过程: (1)取中断类型号68H; (2)计算中断向量地址68H4=1A0H; (3)取中断入口地址的偏移地址送入IP, IP=2050H,段地址送入CS, CS=A000H; (4)转向中断服务程序; (5)中断返回到INT 68H指令的下一条指 令。 图7-5 中断操作过程例子 2. 中断向量(中断入口地址)的设置 IBM PC对256种中断类型已进行了地 址分配,附录D中给出了中断向量地址分配 表。其中类型04为专用中断,中断入口地 址已由系统定义,用户不能修改;类型5 类型31为系统使用中断,也不允许用户修改 ;其余的中断类型号原则上可以由用户定义 ,但实际上,有些中断类型目前已有用途, 例 INT 21H为系统功能调用,中断类型20H 3FH为DOS中断调用。 3. 中断类型号的获取 (1)对于除法出错、单步中断、不可屏蔽中 断NMI、断点中断和溢出中断,CPU分别自 动提供中断类型号04。 (2)对于用户自己确定的软件中断INT n, 中断类型号就是n。 (3)对外部可屏蔽中断INTR,可用硬件电 路(例如通用并行接口芯片8212)设计产生 中断类型号。 (4)对外部可屏蔽中断INTR,可以用可编 程中断控制器8259A获得中断类型号。 如图7-1所示,8个中断请求信号接到 8259A。当外设申请中断时,8259A响应优 先级高的中断源,将中断请求信号送到CPU 的INTR端。8259A收到CPU发出的第二个 中断响应信号 时,将对应中断源的中 断类型号送给CPU,CPU获取中断类型号后 ,自动转入相应的中断服务子程序。 IBM PC机内装有一片8259A,它的中 断入口分配如表7-1所示: 表7-1 8259A的中断源分配 8259A中有中断屏蔽寄存器,它的端口地 址为21H,中断屏蔽寄存器的位70对应IR7 IR0。可以通过设置屏蔽寄存器的各位为0 或1去控制每一个中断源的中断允许或屏蔽, 此位为0,允许中断;此位为1,禁止中断。 例7-7 若某系统中允许定时和键盘中断,则 中断屏蔽控制字为: MOVAL,11111100B OUT 21H,AL 在中断服务程序的结束处,应发出中断 结束命令(EOI)给中断命令寄存器,中断 命令寄存器的端口地址为20H。 例7-8 IBM PC机中断结束命令的程序为: MOVAL,20H OUT20H,AL 综合上面的介绍,我们对中断有了一定 的了解,下面将有关中断的主程序编写方法 归纳如下: 1. 主程序中的初始化 (1)设置中断向量。 (2)设置8259A的中断屏蔽寄存器的中断屏 蔽位。 (3)设置CPU中断允许位标志IF(开中断)。 2. 硬件(外设接口)和CPU自动完成 (1)外设接口向CPU INTR端发中断请求。 (2)当前指令执行完后,CPU发两个中断响 应信号 给外设接口。 (3)CPU读取中断类型号n。 (4)CPU自动将当前PSW、CS、IP内容入 栈保护。 (5)清除IF、TF,禁止外部中断和单步中 断。 (6)从中断向量表中取(4n)地址中内容 IP;取(4n+2)地址中内容CS。 (7)转向中断服务子程序。 这里一定要注意三点: 对重复前缀的指令(如REP MOVSB)作为 一条指令处理。执行一次重复前缀和串指令即 可响应中断,而不是把串操作全部执行完。 遇到开中断指令STI和中断返回指令IRET ,要在这两条指令执行完后,再执行一条指 令才能响应中断。 CPU自动清除IF和TF位,使CPU进入中断 服务子程序后,不允许再产生新的中断,如 果在中断服务子程序中还允许外部中断进入 ,则在中断服务子程序中必须再开中断。 三、中断服务子程序 中断服务子程序的功能各有不同,但所 有的中断服务子程序都有相同的结构形式。 (1)程序开始必须保护中断时的现场,可以 通过一系列PUSH指令将CPU各寄存器的值 入栈保护。 (2)若允许中断嵌套,则用STI指令来设置 开中断,使中断允许标志IF=1。 (3)执行中断处理程序。 (4)用CLI指令来设置关中断,使中断允许 标志IF=0,禁止其他中断请求进入。 (5)给中断命令寄存器送中断结束命令 EOI,使当前正在处理的中断请求标志位被 清除,否则同级中断或低级中断的请求仍 会被屏蔽掉。 (6)恢复中断时的现场,通过一系列POP 指令将CPU各寄存器的值恢复。 (7)用中断返回指令IRET返回主程序,此 时堆栈中保存的断点值和标志值分别装入IP 、CS和PSW。 进入中断服务程序时,TF和IF清除, 不再响应其他外设的中断请求,所以要设置 开中断,以允许中断进入,实现中断嵌套。 恢复寄存器内容时,为了防止有中断进入破 坏其内容,要执行关中断,然后在中断返回 时原来的PSW返回,使IF=1,又再开中断, 这样返回主程序后,中断请求能得到允许。 中断结束命令EOI一般在中断处理结束前发 出,使一次中断处理的过程是完整的。 四、中断响应时序 CPU对可屏蔽中断请求的响应过程要执 行两个连续的中断响应 总线周期,第 一个中断响应总线周期,CPU通知外设准备 响应中断,外设应该准备好中断类型号,第 二个中断响应总线周期,CPU接收外设接口 发来的中断类型号。图7-6给出了8086/8088中 断响应时序。 图7-6 8086/8088中断响应总线周期时序图 7-3 中断优先级和中断嵌套 在实际系统中,经常有多个中断源同时 向CPU请求中断,CPU响应哪个中断源的中 断请求,由中断优先级排队决定,CPU先响 应优先级高的中断请求。当CPU正在处理中 断时,有更高优先级别的中断请求,并且 IF=1,CPU能响应更高级别的中断请求,而 屏蔽掉低级的中断请求,形成了中断嵌套, 或称为多重中断。 一、中断优先级 高 低 IBM PC机中规定优先级从高到低的次序为 : 内中断(除法错、INTO、INT n) 不可屏蔽中断(NMI) 可屏蔽中断(INTR) 单步中断 对于可屏蔽中断的优先级设定有三种方法: 1. 软件查询中断优先级 软件查询中断方式,是将各个外设的 中断请求信号通过或门相或后,送到CPU的 INTR端,同时把几个外设的中断请求状态 位组成一个端口,赋以端口号。任一外设有 中断请求,CPU响应中断后进入中断处理子 程序,用软件读取端口内容,逐位查询端口 的每位状态,查到哪个外设有中断请求,就 转入哪个外设的中断服务程序。查询程序的 次序,决定了外设优先级别的高低,先测试 的中断源优先级别最高。当然在软件查询程 序中也可用移位或屏蔽法来改变端口各位的 测试次序,但查询时间较长,对中断源较多 的情况不合适。

温馨提示

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

评论

0/150

提交评论