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

33
第第第 第第第第第第第第7-1 第第 第第第第第第第CPU 第第第第第第第第第第第第第第第第第第第第第第第第 CPU 第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第 第第第第第第第第第第第第第 第第第第 第第第第第 ,() 第第第

Upload: denton-santos

Post on 01-Jan-2016

186 views

Category:

Documents


0 download

DESCRIPTION

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

TRANSCRIPT

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

第七章 微型计算机中断系统7-1 概述 中断的基本概念: ● CPU 正常运行程序时, ● 由于微处理器内部事件或外设请求, ● 引起 CPU 中断正在运行的程序, ● 转去执行请求中断的外设或内部事件的中断服务

子程序, ● 中断服务程序执行完毕后,仍须返回到主程序被

中断处(断点处)继续执行原先程序。

Page 2: 第七章    微型计算机中断系统
Page 3: 第七章    微型计算机中断系统

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

行 (2) 执行 INT 软件指令 :INT 21H 等。

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

2 、中断响应1 ) CPU 在每条指令的最后一个 T 周期去检测

INTR 引脚 , 若为高 , 且 IF=1, 则 CPU 响应中断 , 并向外设发出 INTA 中断响应信号。

2 ) CPU 响应中断后,就自动实现关中断。 因此,要实现中断嵌套,必须在进入中断服务

程序后就用指令开中断,否则中断嵌套就难以实现。

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

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

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

二、中断分类微机系统中 CPU 处理的中断也分成两大类: 1 、内部中断

也称软件中断 , 是由 CPU 执行软中断指令引起的

2 、外部中断 又称硬件中断 , 是由外部设备或协处理器向 CPU 发

出中断引起的。

这类中断又分为可屏蔽的中断 和 不可屏蔽的中断。 CPU 的 INTR 及 NMI 引脚。

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

7-2 中断处理过程中断处理过程包括: 中断请求、中断判优、中断响应、中断处理及中断返回1 、中断请求

中断源产生中断请求的条件,不同的中断源是不一样的2 、中断判优

有多个中断源同时提出请求的情况,以中断优先权来决定响应次序, CPU 先响应优先级高的中断 , 挂起优先级低的中断 .另一个作用是决定是否实现中断嵌套。下图多层中断嵌套的示意图。

Page 8: 第七章    微型计算机中断系统
Page 9: 第七章    微型计算机中断系统

3 、中断响应1 ) CPU 在每条指令的最后一个 T 周期去检测 INTR 引

脚 , 若为高 , 且 IF=1, 则 CPU 响应中断 , 并向外设发出 INTA 中断响应信号。

2 ) CPU 响应中断后,就自动实现关中断。 因此,要实现中断嵌套,必须在进入中断服务程序后就

用指令开中断,否则中断嵌套就难以实现。4 、中断处理

由中断服务子程序来完成的,中断服务子程序的工作 :1 )保护现场2 )开中断3 )执行中断服务子程序4 )关中断5 )恢复现场

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

5 、中断返回执行中断返回指令 (IRET) , CPU 会自动弹出断点信息送给指令指针( IP 和 CS ),并恢复标志寄存器 FR 的内容,以便回到断点处继续执行。

中断优先权一、软件排优 如图所示

软件查询的次序也就反映了各中断源的优先权的高低二、硬件排优1 、硬件排优电路 链式优先权排队电路

Page 11: 第七章    微型计算机中断系统
Page 12: 第七章    微型计算机中断系统
Page 13: 第七章    微型计算机中断系统
Page 14: 第七章    微型计算机中断系统

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

例:中断控制器 8259A

Page 15: 第七章    微型计算机中断系统
Page 16: 第七章    微型计算机中断系统

6.4 80X86/Pentium 中断系统

Intel 80X86 系列微机可以处理 256个不同的中断源,每个中断源都有对应的中断类型码( 0~ 255 )供 CPU识别。

8086/8088 中断分类

Page 17: 第七章    微型计算机中断系统
Page 18: 第七章    微型计算机中断系统

一、硬件中断由外部硬件产生的 , 又称外部中断 .

(1) 不可屏蔽中断请求 NMI

由 CPU 的引脚 NMI 引入 , 采用边沿触发 ,上升沿之后 维持两个时钟周期高电平有效 . 不能用软件来屏蔽 , 一 旦有不可屏蔽中断请求 , 如电源掉电等紧急情况 ,CPU

必须予以响应 .(2)可屏蔽中断请求 INTR

由 CPU 的引脚 INTR 引入 , 采用电平触发 , 高电平有 效 ,INTR 信号的高电平必须维持到 CPU 响应中断才 结束 . 用户可以通过软件设置是否屏蔽外部中断 .

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

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

ADD AX, VALUE INTO

(4) 由中断指令 INT n 引起的中断 n 为中断类型号

例 测试存储器容量 INT 12H

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

中断向量表

有了中断类型码,如何找到中断服务程序的入口地址?1 、中断向量表 (中断服务程序入口地址表 ) 中断向量也就是中断服务子程序的入口地址(1)系统允许处理 256种中断 ,对应中断类型号为

00~FFH ;(2) 在存储器的 00000H~003FFH, 这 1K 字节空间 . 分成 256组,对应 256种中断,用以存放中断向量;

(3)每个类型号占 4 个字节 , 高 2 个字节存放中断入口地

址的段地址 (CS), 低 2 个字节存放段内偏移地址(IP).

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

中断类型号和中断向量地址之间的关系 :

由中断类型号n4 即可得到相应中断向量的地址 .

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

例 某中断的类型号为 68H,

见右图 .(1) 取中断类型号 68H

(2) 计算向量地址 68H*4=1A0H

(3)将 2050H IP,

A000H CS

(4) 转向中断服务程序(5)中断返回到 INT 68H

指令的下一条指令

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

中断响应过程一、内部中断响应过程对于专用中断,中断类型码是自动形成的,而对于 INTn 指令,其类型码为指令中给定的 n 。在取得了类型码后的处理过程顺序为:

(1) 将类型码乘 4 ,作为中断向量表的指针 ;

(2) 标志寄存器入栈,保护各个标志位 ;

(3) 清除 IF 和 TF 标志,屏蔽新的 INTR 中断和单步中断 ;

(4) 保存断点,即把断点处的 IP 和 CS值压入堆栈,先压入 CS值,再压入 IP 值 ;

(5) 取中断服务程序的入口地址 ( 中断向量表 ) ,分别送至 CS 和 IP 中; (6) 按新的地址指针执行中断服务程序。

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

最后执行中断返回指令 IRET 。 IRET 的执行将使CPU按次序恢复断点处的 IP 和 CS值,恢复标志寄存器 ( 相当于 POPF) 。恢复到断点处继续执行。

内部中断有如下特点: 1.中断由 CPU 内部引起,中断类型码的获得也与外部 无关, CPU 不需要执行中断响应周期去获得中断类 型码;2.除单步中断外,内部中断无法用软件禁止,不受中 断允许标志 IF 的影响;3.内部中断没有随机性,这一点和调用子程序非常 相似。

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

二、外部中断响应过程1 、非屏蔽中断响应

CPU 采样到 NMI 请求时,自动提供中断类型码 2 。然后根据中断类型码,查到中断向量表指针,其后的中断处理过程和内部中断一样。

2 、可屏蔽中断响应

CPU 在每条指令的最后一个 T 周期去检测 INTR 引脚 , 若 INTR 为高 , 且 IF=1, 则 CPU 响应中断。 当 CPU 响应中断后 ,对外设接口发出两个中断响应信号

INTA, 外设收到第二个 INTA 以后 ,立即往数据线上给CPU 送中断类型号

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

一个可屏蔽中断被响应时 CPU 实际执行的总线周期有7个,即:

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

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

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

寄存器中。

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

三、中断过程举例 … … 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

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

中断服务子程序一般格式 :(1) 用 PUSH 指令保护现场 .(2) 若允许中断嵌套 , 则用 STI 指令 , 使 IF=1.

(3) 执行中断处理程序 .(4) 用 CLI 指令关中断 , 使 IF=0,禁止其他中断请求进入 .(5) 给中断命令寄存器送中断结束命令 EOI.

(6) 用 POP 指令来恢复现场 .(7) 用中断返回指令 IRET 返回主程序 , 此时堆栈中保存的 断点值和标志值分别装入 IP,CS 和 PSW.

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

四、各类中断优先权IBM PC 机中规定优先级从高到低的次序为 :内部中断 (除法错 ,INTO,INT n)

不可屏蔽中断 (NMI)

可屏蔽中断 (INTR)

单步中断80X86 中断响应和处理流程图

Page 31: 第七章    微型计算机中断系统
Page 32: 第七章    微型计算机中断系统

第七章 习题

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

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 …