1
第 7章 中断
7.1 概述
7.2 8086/8088的中断系统
7.3 可编程中断控制器 8259A
2
7.1 概述
中断的基本概念
中断处理过程
中断优先级
中断的嵌套
3
7.1 概述
7.1.1 中断的基本概念一、中断和中断源所谓“中断”是指在 CPU正常运行程序时,由于内、外部事件引起 CPU暂时中止正在运行的程序,转而去执行请求 CPU暂时中止的内、外部事件的服务程序,待该服务程序处理完毕后又返回到被中止的程序。
二、中断系统的功能中断处理中断控制
4
三、中断的主要用途四、可屏蔽中断与不可屏蔽中断凡是微处理器内部能够“屏蔽”的中断,称为可屏蔽中断;
凡是微处理器内部不能够“屏蔽”中断,称为不可屏蔽中断;所谓“屏蔽”是指微处理器拒绝响应中断请求信号,不允许打断微处理器所执行的主程序。通常是由内部的中断触发器(或中断允许触发器)来控制的。
5
7.1.2 中断处理过程一,CPU响应中断的条件
1.设置中断请求触发器
2.设置中断屏蔽触发器
3.设置中断允许触发器的状态 (CPU内 )
4.CPU在现行指令结束后响应中断
6
中断处理过程的流程图
7
具有中断屏蔽的接口电路
8
二,CPU对中断响应
1.关中断
2.保护断点
3.识别中断源识别中断源的两种方法:
( 1)查询中断;( 2)向量中断( Vectored Interrupt)
4.保护现场
5.执行中断服务程序
6.恢复现场
7.开中断与返回
9
10
7.1.3 中断优先级遇到多个中断源同时请求中断的情况,
CPU必须确定首先为哪一个中断源服务,
根据中断源要求的轻重缓急,
排好中断处理的优先次序,
即优先级( Priority),又称优先权。
解决中断的优先级的方法有:
一、软件查询确定中断优先级
11
12
二、硬件查询确定优先级优先级中断链电路
13
三、中断优先级编码电路优先级编码器 — 对提出请求的中断源的中断请求的优先级进行编码,中断源编码为三位代码。
优先级寄存器 — 存放正在进行中断处理的外设的优先级编码,当 CPU执行主程序时,优先级失效信号置,1”。
比较器 — 用于对新输入的中断请求和 CPU正在执行的中断请求进行比较,以确定是否进行中断嵌套。
三态缓冲器 — 存放中断类型码,由 读出。INTA
14
15
7.1.4 中断的嵌套当 CPU执行优先级较低的中断服务程序时,允许响应优先级较高的中断源请求中断,而挂起正在处理的中断,这就是中断嵌套或称多重中断。
多重中断流程与单级中断的区别:
( 1)加入屏蔽本级和较低级中断请求的环节;
( 2)在进行中断服务之前,要开放中断;
( 3)中断服务程序结束之后,必须安排并执行关中断指令。
16
7.2 8086/8088的中断系统
外部中断
内部中断
中断向量表
中断过程
17
7.2 8086/8088的中断系统
8086/8088有一个简单而灵活的中断系统,每个中断都有一个中断类型码( Type Code),以供 CPU进行识别,
8086/8088最多能处理 256种不同的中断类型。
7.2.1 外部中断
8086/8088有两条中断信号线 —INTR和 NMI,可供外设向
CPU发中断请求指令。
18
一、可屏蔽中断 INTR
如果 IF=“H”(置 1)表示 INTR线上的中断开放,CPU在完成现在正在执行的指令后,识别该中断请求,并进行中断处理。
CPU对 INTR中断请求的响应过程是执行两个 INTA(中断响应)总线周期。
19
二、不可屏蔽中断 NMI
不可屏蔽中断请求信号 NMI用来通知 CPU发生了
“灾难性”的事件,如电源掉电、存储器读写出错、总线奇偶位出错等。在 CPU响应 NMI时,不必由中断源提供中断类型码 (规定为 2),因此 NMI
响应也不需要执行总线周期 INTA。
7.2.2 内部中断内部中断是通过软件调用的不可屏蔽中断,包括溢出中断、除法出错中断、单步中断,INTn指令中断以及单字节 INT3指令中断。
20
一、溢出中断
OF置,1”,执行溢出中断指令( INTO),产生一个 4型中断(中断类型码为 4)。
二、除法出错中断(中断类型码为 0)
三,INT n指令中断(中断类型码为 n)
四、断点中断断点中断即单字节 INT3指令中断(中断类型码为 3)
五、单步(陷阱)中断当陷阱标志 TF置,1”时,8086/8088处于单步工作方式。单步方式是一种有用的调试工具(中断类型码为 1)
21
内部中断的特点是:
( 1)中断类型码或包含在指令中,或是预先规定的;
( 2)不执行 INTA总线周期;
( 3)除单步中断外,任何内部中断都无法禁止;
( 4)除单步中断外,任何内部中断的优先级都比任何外部中断的优先级高。
22
7.2.3 中断向量表中断向量表(又称中断指针表)是存放中断服务程序入口地址(即“中断向量”)的表格。它存放在存储器的最低端,共 1024个字节,每 4个字节存放一个中断服务程序的入口地址。
给出中断类型码 n,CPU将 n× 4得中断向量表的地址指针,找到该指针对应的 4个内存单元,前 2字节送 IP,
后二字节送 CS,由此转入中断服务程序。
23
24
7.2.4 中断过程中断处理过程
25
7.3 可编程中断控制器 8259A
8259A的内部结构与功能
8259A的初始化命令字及其编程
8259A的操作命令字及其编程
8259A的应用举例
26
7.3 可编程中断控制器 8259A
8259A PIC(Programmable Interrupt Controller)是一种可编程中断控制器,又称“优先级中断控制器”,具有强大的中断管理功能。
( 1)可管理 8级优先权中断源,通过 8259A的级联,
最多可管理 64级优先权的中断源;
( 2)对任何一个级别的中断源都可单独进行屏蔽;
( 3)能向 CPU提供可编程的标识码 (中断类型码 );
( 4)具有多种中断优先权管理方式:完全嵌套方式、
自动循环方式、特殊循环方式、特殊屏蔽方式和查询方式 。
27
28
7.3.1 8259A的内部结构与功能一、基本组成部分:
( 1) 8位中断请求寄存器( IRR)用来存放从外设来的中断请求信号 IR0 ~ IR7;
( 2) 8位中断屏蔽寄存器( IMR)用来存放 CPU送来的屏蔽信号,当它的某一位或某几位为,1”时,
则对应的中断请求就被屏蔽;
( 3) 8位中断服务寄存器( ISR)是用来记忆正在处理中的中断级别;
( 4)优先权判别器( PR)也称优先权分析器,管理和识别各个中断源的优先级别;
29
( 5)控制逻辑;
( 6)数据总线缓冲器;
( 7)读 /写逻辑;
( 8)级联缓冲器 /比较器为实现多片 8259A的级联应用而设计的。
IRR,IMR,ISR,PR和控制逻辑五个部分是实现中断优先管理的核心部件。
8259A只有两个 I/O端口地址,它们由 和 A0输入的地址信息决定。
CS
30
8259A的结构框图和引脚图
31
二,8259A的中断优先权管理方式及中断结束方式
1,8259A的中断优先权管理方式
( 1)完全嵌套方式
( 2)自动循环方式
( 3)特殊循环方式
( 4)特殊屏蔽方式
( 5)查询排序方式
32
2,8259A的中断结束方式
( 1) EOI命令方式所谓 EOI命令方式是指在中断服务程序末尾向
8259A发出中断结束命令,清除 ISR中的相应位,
表示该级的中断服务程序已经结束。 EOI命令有普通 EOI命令和特殊 EOI命令两种。
普通 EOI命令将自动清除 ISR中所有已置位的优先级最高的那一位。适用于完全嵌套方式的中断请求。
33
当 8259A不工作于完全嵌套方式,就不能应用普通 EOI命令,特殊 EOI命令中带有用于指定
ISR中相应位复位的三位编码信息。特殊 EOI命令可以作为任何优先级管理方式的中断结束方式。
( 2)自动 EOI方式采用此方式时,在第二个 响应信号的后沿由 8259A自动执行普通 EOI操作,复位 ISR中已置位的中断优先级最高的位。
INTA
34
三、中断的顺序
8259A的中断工作顺序为:
( 1)一条或多条中断请求( IR0~IR7)变为高电平,使
IRR相应位置,1”;
( 2) 8259A接受这些请求,分析它们的优先级,向
CPU发出中断请求信号 INT;
( 3) CPU响应中断,并以 脉冲作为回答;
( 4)接受来自 CPU第一个 脉冲,最高优先级的
ISR位置位,而相应的 IRR位被复位。在该周期,
8259A没有驱动数据总线;
( 5) CPU启动第二个 脉冲,在该脉冲期间,
8259A向 CPU发出中断类型码(中断识别码)。
INTA
INTA
INTA
35
7.3.2 8259A的初始化命令字及其编程
8259A是可编程的中断优先级控制器,必须根据 8259A的具体应用环境对它进行初始化编程。
8259A的初始化编程就是通过程序向 8259A写入若干个初始化字的过程。
一、四个相应的初始化命令字寄存器
1.ICW1 2.ICW2 3.ICW3 4.ICW4
36
ICW1决定 8259A的工作方式
ICW2设定可屏蔽中断的中断类型码(高 5位)
ICW3仅用于级联方式
ICW4设定 8259A的优先级管理方式,EOI方式等
37
1,ICW1
8259A ICW1的格式
38
2,ICW2
8259A ICW2的格式
39
3,ICW3
8259A ICW3的格式
40
4,ICW4
8259A ICW4的格式
41
二,8259A的初始化编程图
42
Mov al,13h
Out 80h,al
Mov al,18h
Out 81h,al
Mov al,0dh
Out 81h,al
43
7.3.3 8259A的操作命令字及其编程在 8259A的工作过程中需要改变中断优先级管理方式或中断响应的次序,或者需要读出 8259A内部某些寄存器的内容,就需要再向 8259A写入有关的操作命令字。
44
8259A有三种操作命令字 OCW1~OCW3
1,OCW1
用来设置中断源的屏蔽状态
2,OCW2
用来设置中断结束的方式和修改为循环方式的中断优先权管理方式
3,OCW3
用来设置特殊屏蔽方式和查询方式,并用来控制
8259A内部状态字 IRR,ISR的读出
45
8259A OCW1的格式
46
8259A OCW2的格式
478259A OCW3的格式
48
8259A操作命令的编程
49
7.3.4 8259A的应用举例
8259A在 IBM-PC/XT中的应用
508259A在 IBM-PC/AT中的应用
51
六、多片 8259A组成的主从式中断系统
52
说明:
① 每片 8259A都要分配两个端口地址;
② 主片初始化时,ICW1中的 SNGL位必须为 0,
ICW3指明哪个引脚连有从片,一般通过 ICW4的
SFNM位设为特殊全嵌套方式;
③ 从片初始化时,ICW1中的 SNGL位也必须为 0,
ICW3指明该从片接主片的哪个引脚;
主从式中断系统的响应过程:
① 从片的 INT引脚往主片的 IRn引脚上发送一个中断请求信号;
② 该中断请求信号通过主片的 INT引脚送到 CPU;
③ CPU回送两个 INTA信号,同时送到主片和各从片;
53
⑤ 被选通的从片收到第一个 INTA信号后,将相应
ISn位置 1,同时清除相应 IRn位;
⑥ 第二个 INTA信号到来后,主片没有动作,从片将中断类型码送到数据总线上;
④ 主片收到第一个 INTA信号后,将相应 ISn位置 1,
同时清除相应 IRn位;并将从片标号值送到
CAS0~CAS2上;
主从式中断系统中的优先级排列:
设系统中有一个主片,两个从片,且从片 1接主片
IR1引脚,从片 2接主片 IR2引脚,则优先级排列如下:
主片,IR0
从片 1,IR0~IR7
从片 2,IR0~IR7
主片,IR3~IR7
54
1、中断控制器的功能;
2,8259A的编程结构和工作原理;
3,8259A各工作方式特点和区别;
4,8259A的初始化流程;
5、读 IRR,ISR和 IMR的方法;
6、电平触发方式下中断请求信号应何时撤消?
7、看懂 8259A的应用实例;
8、主从式中断系统中优先级的排列次序;