1 / 33

第七章 微型计算机中断系统

第七章 微型计算机中断系统. 7-1 概述 中断的基本概念: ● CPU 正常运行程序时, ● 由于微处理器内部事件或外设请求, ● 引起 CPU 中断正在运行的程序, ● 转去执行请求中断的外设或内部事件的中断服务子程序, ● 中断服务程序执行完毕后,仍须返回到主程序被中断处(断点处)继续执行原先程序。. 1 、 中断源: 引起程序中断的事件 外部中断源 (1) I/O 设备:键盘、显示器,打印机等; (2)数据通道:磁带、磁盘; (3)实时钟:外部所需的定时电路; (4)故障源:掉电、存储器奇偶校验错等。 内部中断源 :

Download Presentation

第七章 微型计算机中断系统

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第七章 微型计算机中断系统 7-1概述 中断的基本概念: ●CPU正常运行程序时, ● 由于微处理器内部事件或外设请求, ● 引起CPU中断正在运行的程序, ● 转去执行请求中断的外设或内部事件的中断服务子程序, ● 中断服务程序执行完毕后,仍须返回到主程序被中断处(断点处)继续执行原先程序。

  2. 1、中断源:引起程序中断的事件 外部中断源 (1)I/O设备:键盘、显示器,打印机等; (2)数据通道:磁带、磁盘; (3)实时钟:外部所需的定时电路; (4)故障源:掉电、存储器奇偶校验错等。 内部中断源: (1)CPU指令执行产生的异常:溢出、被0除、单步执行 (2)执行INT软件指令:INT 21H等。

  3. 2、中断响应 1)CPU在每条指令的最后一个T周期去检测INTR引脚,若为高,且IF=1,则CPU响应中断,并向外设发出INTA中断响应信号。 2)CPU响应中断后,就自动实现关中断。 因此,要实现中断嵌套,必须在进入中断服务程序后就用指令开中断,否则中断嵌套就难以实现。

  4. 3、中断向量表 存放中断服务子程序的入口的地址 4、中断优先级 多个中断发生中断请求时 中断嵌套 5、中断屏蔽

  5. 二、中断分类 微机系统中CPU处理的中断也分成两大类: 1、内部中断 也称软件中断,是由CPU执行软中断指令引起的 2、外部中断 又称硬件中断,是由外部设备或协处理器向CPU发 出中断引起的。 这类中断又分为可屏蔽的中断 和 不可屏蔽的中断。 CPU的INTR及NMI引脚。

  6. 7-2 中断处理过程 中断处理过程包括: 中断请求、中断判优、中断响应、中断处理及中断返回 1、中断请求 中断源产生中断请求的条件,不同的中断源是不一样的 2、中断判优 有多个中断源同时提出请求的情况,以中断优先权来决定响应次序,CPU先响应优先级高的中断,挂起优先级低的中断. 另一个作用是决定是否实现中断嵌套。 下图多层中断嵌套的示意图。

  7. 3、中断响应 1)CPU在每条指令的最后一个T周期去检测INTR引脚,若为高,且IF=1,则CPU响应中断,并向外设发出INTA中断响应信号。 2)CPU响应中断后,就自动实现关中断。 因此,要实现中断嵌套,必须在进入中断服务程序后就用指令开中断,否则中断嵌套就难以实现。 4、中断处理 由中断服务子程序来完成的,中断服务子程序的工作: 1)保护现场 2)开中断 3)执行中断服务子程序 4)关中断 5)恢复现场

  8. 5、中断返回 执行中断返回指令(IRET),CPU会自动弹出断点信息送给指令指针(IP和CS),并恢复标志寄存器FR的内容,以便回到断点处继续执行。 中断优先权 一、软件排优 如图所示 软件查询的次序也就反映了各中断源的优先权的高低 二、硬件排优 1、硬件排优电路 链式优先权排队电路

  9. 2、可编程中断控制器 采用可编程中断控制器是当前微型机系统中解决中断优先权管理的常用办法。 下图中断控制器的应用。 例:中断控制器8259A

  10. 6.4 80X86/Pentium中断系统 • Intel 80X86系列微机可以处理256个不同的中断源,每个中断源都有对应的中断类型码(0~255)供CPU识别。 • 8086/8088中断分类

  11. 一、硬件中断 由外部硬件产生的,又称外部中断. (1) 不可屏蔽中断请求 NMI 由CPU的引脚NMI引入,采用边沿触发,上升沿之后 维持两个时钟周期高电平有效. 不能用软件来屏蔽,一 旦有不可屏蔽中断请求,如电源掉电等紧急情况,CPU 必须予以响应. (2)可屏蔽中断请求 INTR 由CPU的引脚 INTR 引入,采用电平触发,高电平有 效,INTR信号的高电平必须维持到CPU响应中断才 结束.用户可以通过软件设置是否屏蔽外部中断.

  12. 二、软件中断 又称内部中断.是CPU根据软件指令或标志寄存器中 的某个标志位产生的.主要有以下几种: (1) 除法错中断-- 0型中断 n=0 (2) 单步执行中断--1型中断 n=1 (3) 溢出中断--4型中断, 专用指令为INTO 例 测试加法的溢出 ADD AX, VALUE INTO (4) 由中断指令INT n引起的中断 n为中断类型号 例 测试存储器容量 INT 12H

  13. 中断向量表 有了中断类型码,如何找到中断服务程序的入口地址? 1、中断向量表(中断服务程序入口地址表) 中断向量也就是中断服务子程序的入口地址 (1)系统允许处理256种中断,对应中断类型号为00~FFH; (2)在存储器的00000H~003FFH,这1K字节空间. 分成256组,对应256种中断,用以存放中断向量; (3)每个类型号占4个字节,高2个字节存放中断入口地址的段地址(CS),低2个字节存放段内偏移地址(IP).

  14. 中断类型号和中 断向量地址之间 的关系: 由中断类型号 n4即可得到 相应中断向量 的地址.

  15. 例 某中断的类型号为68H, 见右图. (1)取中断类型号68H (2)计算向量地址 68H*4=1A0H (3)将2050H IP, A000H CS (4)转向中断服务程序 (5)中断返回到 INT 68H 指令的下一条指令

  16. 中断响应过程 一、内部中断响应过程 对于专用中断,中断类型码是自动形成的,而对于INTn指令,其类型码为指令中给定的n。在取得了类型码后的处理过程顺序为: (1) 将类型码乘4,作为中断向量表的指针; (2) 标志寄存器入栈,保护各个标志位; (3) 清除IF和TF标志,屏蔽新的INTR中断和单步中断; (4) 保存断点,即把断点处的IP和CS值压入堆栈,先压入 CS值,再压入IP值; (5) 取中断服务程序的入口地址(中断向量表),分别送至 CS和IP中; (6)按新的地址指针执行中断服务程序。

  17. 最后执行中断返回指令IRET。IRET的执行将使CPU按次序恢复断点处的IP和CS值,恢复标志寄存器(相当于POPF)。恢复到断点处继续执行。 • 内部中断有如下特点: 1.中断由CPU内部引起,中断类型码的获得也与外部 无关,CPU不需要执行中断响应周期去获得中断类 型码; 2.除单步中断外,内部中断无法用软件禁止,不受中 断允许标志IF的影响; 3.内部中断没有随机性,这一点和调用子程序非常 相似。

  18. 二、外部中断响应过程 1、非屏蔽中断响应 CPU采样到NMI请求时,自动提供中断类型码2。然后根据中断类型码,查到中断向量表指针,其后的中断处理过程和内部中断一样。 2、可屏蔽中断响应 CPU在每条指令的最后一个T周期去检测INTR引脚, 若INTR为高,且IF=1,则CPU响应中断。 当CPU响应中断后,对外设接口发出两个中断响应信号INTA, 外设收到第二个 INTA 以后,立即往数据线上给CPU送中断类型号

  19. 一个可屏蔽中断被响应时CPU实际执行的总线周期有7个,即:一个可屏蔽中断被响应时CPU实际执行的总线周期有7个,即: • 执行两个中断响应总线周期,CPU获得相应的中断 类型码,形成中断向量表指针存入暂存器 (2) 执行一个写总线周期,把标志寄存器FR的内容压 入堆栈。并将中断允许标志IF和单步标志TF清0, 以禁止中断响应过程中其他可屏蔽中断的进入, 同时也禁止了中断处理过程中出现单步中断。

  20. (3)执行两个写总线周期,把断点地址的内容 CS、IP压入堆栈。 (4)执行一个读总线周期,从中断向量表中取出 中断处理子程序入口地址的偏移量送到IP的 寄存器中。 (5)执行一个读总线周期,从中断向量表中取出 中断处理子程序入口地址的段基值送到CS 寄存器中。

  21. 三、中断过程举例 …… CLI PUSH DS MOV AX, 0000H INTPROC PROC MOV DS, AX …… MOV BX,0200H MOV DX, DPORT MOV AX,OFFSET INTPROC …… MOV [BX] ,AX IRET MOV AX, SEG INTPROC INTPROC ENDP MOV [BX+2] ,AX POP DS …… MOV AX, 2000H ADD AX, AX MOV [SI] , AX

  22. 中断服务子程序一般格式: (1) 用PUSH指令保护现场. (2) 若允许中断嵌套,则用STI指令,使IF=1. (3) 执行中断处理程序. (4) 用CLI指令关中断,使IF=0,禁止其他中断请求进入. (5) 给中断命令寄存器送中断结束命令EOI. (6) 用POP指令来恢复现场. (7) 用中断返回指令IRET返回主程序,此时堆栈中保存的 断点值和标志值分别装入IP,CS和PSW.

  23. 四、各类中断优先权 IBM PC机中规定优先级从高到低的次序为: 内部中断(除法错,INTO,INT n) 不可屏蔽中断(NMI) 可屏蔽中断(INTR) 单步中断 80X86中断响应和处理流程图

  24. 第七章 习题

  25. SP=0100H、SS=0300H、PSW=0240H, 在存储单元中已有内容为(00020)=0040H、(00022H)=0100H,在段地址为0900H及偏移地址为00A0H的单元中,有一条中断指令INT 8。试问,执行INT 8指令后,SS、SP、IP、PSW的内容是什么?栈顶的三个字是什么。 解:8×4=32=20H 0900:00A0 INT 8; 0300:00FA A2 执行INT 8指令后, 00 SP=00FAH 0300:00FC 00 SS=0300H 09 PSW=0040H 0300:00FE 40 CS=0100H 02 IP=0040H 0300:0100 …

More Related