第八章《中断及8259A》

Download Report

Transcript 第八章《中断及8259A》

中断系统与可编程中断控制器
8259A
教师: 王晓甜
[email protected]
Contents
2
1
中断概念及处理过程
2
8086的中断系统
3
可编程中断控制器8259A及其应用
4
总结
[email protected]
主要学习内容
§8.1概念及处理过程
1、中断概念
2、中断源
3、中断处理过程
(1)中断请求
(2)中断判优
(3)中断响应
(4)中断服务
①②③④⑤
(5)中断返回
§8.2 8086中断系统
1、中断源与中断类型号
2、中断向量表
3、中断响应过程
4、中断时序
3
§8.3 中断控制器Intel8259A
1、性能
2、结构和工作原理
3、外部引脚和工作过程
4、工作方式
(1)中断优先权管理方式①②③④
(2)中断源屏蔽方式①②
(3)结束中断方式①②③④
(4)与系统总线的连接方式①②
(5)引入中断请求的方式①②③
5、8259A的编程
(1)端口地址
(2)初始化编程ICW1-ICW4
(3)操作编程OCW1-OCW3
6、级联
[email protected]
8.1 中断概念及处理过程
一、中断系统中的名词概念
• 一、中断的概念
中断是指CPU暂停正在执行的程序,转去执行处理中断事
件的中断服务程序,待执行完中断服务程序再返回到原被
中断的程序继续执行。
主
程
中断申请
序
中断服
务程序
返
回
4
[email protected]
8.1 中断概念及处理过程
一、中断系统中的名词概念
• 中断源
8086用8位二进制码表示一个中断类型,共有
256个中断,可分为两大类:
引起中断的原因,或产生中断请求的来源
可屏蔽中断
INTR
外部中断源 非可屏蔽中断 NMI
中断源
除法错中断
单步中断
内部中断源 断点中断
运算溢出中断
软中断
5
[email protected]
8.1 中断概念及处理过程
一、中断系统中的名词概念
●中断类型号
为了能使CPU识别中断源,从而能正确地转向该中
断源对应的中断服务程序入口,通常用若干位二进制
编码来给中断源编号,该编号称为中断类型号。
●中断向量表
存储器从00000H开始的最低地址区
的1024个单元,存放256个中断服务程序
的入口地址。
已知中断类型号,可以直接找到该中
断服务子程序的入口地址
6
[email protected]
8.1 中断概念及处理过程
一、中断系统中的名词概念
●中断断点
由于中断的发生,某个程序被暂停执行。该程序中
即将执行,但由于中断而没有被执行的那条指令(即
中断发生时CPU正在执行指令的下一条指令)的地址称
为中断断点,简称断点
7
[email protected]
8.1 中断概念及处理过程
一、中断系统中的名词概念
●中断服务程序
中断服务程序:处理中断事件的程序段。如除法错
中断服务程序、输入输出中断服务程序等。
中断服务程序与一般的子程序对比:子程序的调用
是由程序设定,因此是确定的而中断服务程序由某
个事件引发,它的发生往往是随机的、不确定的。
8
[email protected]
8.1 中断概念及处理过程
一、中断系统中的名词概念
●中断系统
为实现计算机的中断功能而配置的相关硬
件、软件的集合称为中断系统。
9
[email protected]
8.1 中断概念及处理过程
一、中断系统的硬件结构
●中断源及分类
通常称引起中断的事件为中断源。
(1)硬件中断(外部中断):即通过外部的硬件产生的中断
N
2
指令中断
不可屏蔽中断:每个系统中仅允许有一个,都是用来处理紧急
NMI 非屏蔽中断请求
内
情况的,由NMI引脚引入,不受IF标志的影响,一旦发生,系统会
外
内
4
溢出中断
部
立即响应;
部
中 可屏蔽中断:由INTR引脚引入,IF=1时可屏蔽中断才能进入
3
中
断点中断
可
中断逻辑
断
,反之则不允许进入。可屏蔽中断可有多个,一般是通过优先级排
中断
断
屏
队,从多个中断源中选出一个进行处理。
控制
源
0
蔽
源
除法错
器
中
(2) 软件中断(内部中断):即根据某条指令或者对标志寄存器中
INTR
82
断
1
59
某个标志的设置而产生,它与硬件电路无关,常见的如除数为0,或
请
单步中断
A
求
用INT n指令产生
10
8086/8088 CPU
[email protected]
8.1 中断概念及处理过程
二、中断工作方式的优点
●并行处理能力
●实时处理能力
●故障处理能力
●多道程序或多重任务的运行
11
[email protected]
8.1 中断概念及处理过程
三、中断管理
• 中断系统需要实现对中断过程的控制,解决中断源
识别,中断优先权和中断嵌套等一系列问题
 主程序实现中断与返回;
外设1中断服务程序
外设2中断服务程序
 识别中断源
②响应中断2
①响应中断1
外设1
能进行中断优先权排队;
中断请求
外设2中断请求
 实现中断嵌套(响应A的过程
中可以被比A优先级更高的中断
再次中断);
③中断返回
④中断返回
IRET
12
[email protected]
IRET
8.1 中断概念及处理过程
• 四、中断过程
1. 请求中断
13
2. 中断响应
[email protected]
3. 中断服务
4.中断返回
8.1 中断概念及处理过程
• Step 1: 中断源请求中断
• 外部中断源:由外部硬件产生可屏蔽或不可屏蔽中断
的请求信号。
• 内部中断源:在程序运行过程中发生了指令异常或其
他情况。
某些中断源可以被禁止(CLI)、被屏蔽(MASK)、可以嵌套
NMI
不可屏
蔽中断
INTR
可屏蔽
中断
14
中断检测
[email protected]
IF
中断逻辑
(1)STI
(2)CLI
8.1 中断概念及处理过程
• Step 2: CPU进行中断响应
(一) 判断响应中断的条件
A. 内部中断
当前指令执行结束
B. 非可屏蔽中断响应条件 (NMI)
没有总线请求
当前指令执行结束
C.可屏蔽中断响应条件 (INTR)
CPU处于中断允许状态(即开中断), IF=1
没有不可屏蔽中断请求和总线请求
当前指令执行结束
15
[email protected]
8.1 中断概念及处理过程
• Step 2: CPU进行中断响应
• (二)CPU的中断响应周期
中断响应周期
主程序
识别中断源,获得中断类型号
向中断源发出中断响应信号
FLAGS , CS , IP 进栈
清除 TF ,标志IF ,关中断
读中断向量,
转入中断 服务程序
中断服务程序
保护现场
开中断
中断处理
关中断
恢复现场
中断返回
断点
16
[email protected]
8.1 中断概念及处理过程
• Step3. 中断服务程序
由一系列的PUSH指令完成,保护那些与
主程序中有冲突的寄存器。
由STI实现,为了能进行中断的嵌套。
提供具体的数据传输和处理。
CLI IF=0。
与保护现场对应,注意恢复次序。
使用中断返回指令IRET,不能用子程序返回指
令RET。恢复断点地址外和标志寄存器的值 。
17
[email protected]
8.1 中断概念及处理过程
入口地址:PUSH AX;
PUSH BX;
PUSH CX;
PUSH DX;
PUSH SI;
PUSH DI;
PUSH SP;
PUSH BP;
STI;
:
:
CLI;
POP BP;
POP SP;
POP DI;
POP DX;
POP SI;
POP CX;
POP BX;
POP AX;
STI ;
IRET
18
[email protected]
保护现场,将
有可能用到的
寄存器入栈
开中断
关中断
恢复现场
开中断
8.1 中断概念及处理过程
• Step 4. 中断返回


19
无论内部中断或者外部中断,都是由中断服务程序的末
尾设置 IRET 指令实现的。
IRET指令的操作是:恢复断点处的地址CS IP和PSW,
使被中断的程序继续执行
[email protected]
Contents
20
1
中断概念及处理过程
2
8086的中断系统
3
可编程中断控制器8259A及其应用
4
总结
[email protected]
8.2 8086 的中断系统
一、8086微处理器的中断类型
8086用8位二进制码表示一个中断类型,共有
256个中断,可分为两大类:
可屏蔽中断
外部中断 非可屏蔽中断
中断
除法错中断
单步中断
内部中断 断点中断
溢出中断
软中断
21
[email protected]
8.2 8086 的中断系统
一、8086微处理器的中断类型
8086中断结构
中断优先级
外部不可屏蔽中断
8086 系统中,中断优先级的次序为:
高
NMI
INTR
内部中断 (除法错、INTO、INT n)
8086 微处理器中断逻辑
INTA
NMI
INT n
指令
低
INTINTR
3 INTO
断点
溢出
单步中断
除法
出错
优先级各有高低
22
[email protected]
单步
中断
8259A
外
部
可
屏
蔽
中
断
请
求
8.2 8086 的中断系统
一、8086微处理器的中断类型
1. 外部可屏蔽中断
可屏蔽中断由INTR引入,受标志寄存器中的
中断允许标志位IF的控制。IF=0时,微处理器不
响应INTR的中断请求,IF=1时,微处理器响应
INTR的中断请求。
8086的可屏蔽中断源由可编程中断控制器
8259A统一管理,INTR中断的类型码可以是8~255
。
23
[email protected]
8.2 8086 的中断系统
一、8086微处理器的中断类型
2. 外部不可屏蔽中断
不可屏蔽中断由NMI引脚引入,微处理器对NMI中断
请求的响应,不受中断允许标志位IF控制。不管IF的状态
如何,只要NMI信号有效,8086现行指令执行结束,没有
DMA请求,都会立即响应NMI中断请求。NMI中断类型
码固定为2 。
24
[email protected]
8.2 8086 的中断系统
一、8086微处理器的中断类型
3. 内部中断
• 除法中断
除法操作时,除数为0或商溢出
2
• 单步中断
陷阱标志TF=1,单步操作,INT 1
3
• 断点中断
设置断点,INT 3
4
• INTO
5
• INT n(软中断)
1
25
若上一步指令使OF=1,则INTO引起4号中断
用户使用INT 指令产生一个中断,如INT 21 H
[email protected]
8.2 8086 的中断系统
二、8086微处理器的中断向量表
中断向量:也称为中断指针,就是中断服务
程序的入口地址
中断向量表:它是中断类型号与它对应的中
断服务程序入口地址之间的换算表。8086的
中断向量表占用存储器从00000H开始的最
低地址区的1024个单元,每个中断向量占用
4B,故可存256个中断向量。
26
[email protected]
8.2 8086 的中断系统
地址
000H
内存
中断类
型号n
×4
0000:4n+0
0000:4n+1
0000:4n+2
0000:4n+3
00
10
00
20
004H
IP
1000
008H
00CH
010H
2000
014H
CS
018H
中断向量
类型0指针(被0除)
类型1指针(单步)
类型2指针(NMI)
类型3指针(断点)
类型4指针(溢出)
类型5指针
07CH
080H
084H
中断向量表结构
[email protected]
类型40H指针
3FCH
3FFH
27
类型3FH指针
类型FFH指针
IP
CS
8.2 8086 的中断系统
三、8086微处理器的中断响应及返回
屏蔽的中断 INTR—电平触发信号
GND
1
40
AD14
AD13
AD12
AD11
AD10
AD9
AD8
AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD0
NMI
INTR
CLK
GND
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
INTEL
8086
CPU
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
Vcc
AD15
A16/S3
A17/S4
A18/S5
A19/S6
BHE/S7
MN/MX
RD
HOLD
HLDA
WR
M /IO
DT/R
DEN
ALE
INTA
TEST
READY
RESET
注意:INTR线上的请求信号的出现是异步的,但在CPU内
部要由CLK的上升沿同步,在INTR上的中断请求信号必须
保持直到当前指令结束。
28
[email protected]
8.2 8086 的中断系统
8086响应中断,到转入中断处理,要经过两个连续中断响应周期。
第二个中断响应周期
第一个中断响应周期
T1
T2
T3
T4
T1
T2
T3
CLK
ALE
INTA
INTR
AD7~AD0
T4
INTR
要持续
至少两
个以上
中断响
应周期
向量类型码
第一个INTA信号:将在第一个响应周期的T2状态发出;同时将中断请
求触发器复位。
第二个INTA信号:在第二个中断响应周期再次发出,要求8259A在第
二个响应周期的T3结束之前输入中断向量类型码到CPU。
29
[email protected]
8.2 8086 的中断系统
(2) 非屏蔽中断 NMI
不受FR中IF的影响,CPU在当前指令执行完后响
应,8086要求NMI上的请求信号的有效宽度要大
于两个时钟周期。
非屏蔽中断常用于处理系统的电源故障。
非屏蔽中断的优先权高于可屏蔽中断,CPU采样
到NMI就自动给出中断向量号,而不需要经过像
可屏蔽中断那样的中断响应周期。
30
[email protected]
8.2 8086 的中断系统
(3) 内部中断
内部中断响应操作有以下共同点:
▲中断类型号要么是指令码给定的,要么是处
理器硬件决定的,都不需要从外部逻辑输入。
▲没有信号的响应周期。
▲不受IF位的控制,但单步中断受TF位控制。
▲除单步中断之外,其它内部中断都比外部中
断优先响应。
除上述特点外,内部中断响应也要执行可屏
蔽中断响应的③、④和⑤项操作。
31
[email protected]
8.2 8086 的中断系统
四、中断概念的再讨论
1、中断与调子程序之间的关系
(1)中断过程实际上是CPU从执行当前主程序转到执行为外
设服务的子程序,因此从这个角度来看,中断过程是一
个调用子程序的过程。
(2)中断过程与子程序调用还是有很大差别的,首先调用
子程序的过程是一个无条件过程,但中断过程的中断服
务程序的调用一般是有条件的。其次,子程序调用在整个
程序执行中的位置是固定的。但对于硬件中断过程,只
要条件满足,在整个程序执行的任意一时间点都有可能
发生从主程序向中断服务子程序的转移事件,也就是说
硬件中断产生的调用过程是随机的,不可预测的。
32
[email protected]
8.2 8086 的中断系统
四、中断概念的再讨论--中断与程序调用的区别
子程序的执行是由程序员事先安排好的
(由一条调用子程序指令转入),而中断服务
程序的执行则是由随机的中断事件引起的;
子程序的执行受到主程序或上层子程序的
控制,而中断服务程序一般与被中断的现行程
序毫无关系;
不存在同时调用多个子程序的情况,而有
可能发生多个外设同时请求CPU为自己服务的
情况。
33
[email protected]
8.2 8086 的中断系统
四、中断概念的再讨论
2、外部中断和 INT n 之间的关系
结合中断指令INT n,我们可以这样理解外部
中断:当外部中断源发中断给CPU时,如果CPU满足
一定的条件,处于开中断状态,CPU就可以响应中断
,这时外设在CPU正在执行指令与其下一个指令之间
,等效“插入”了一个INT n指令,这里的n就是外设
提供的中断类型号。注意这里用“等效”两字表示实
际过程中是不存在插入INT n指令的操作,但CPU确
实完成了类似INT n指令的功能,实现了主程序向中
断程序的转移。
34
[email protected]
Thank you
教师: 王晓甜
[email protected]
• 8259A两个端口地址
共用偶地址的寄存器
偶地址 A0=0,EG,20H
奇地址 A0=1,EG,21H
写操作:ICW1,OCW2,OCW3,
读操作:IRR,ISR
共用奇地址的寄存器
36
写操作:ICW2,ICW3,ICW4,OCW1
读操作:IMR
[email protected]
中断系统与可编程中断控制器
8259A
教师: 王晓甜
[email protected]
回顾上节内容
• 名词概念:

中断源,中断类型,中断类型号,中断断点,中断服务
程序,中断系统,中断优先权,中断嵌套
• 中断过程




38
1. 中断请求
2. 中断响应
①判断条件 ②获取中断类型号 ③CS,IP,FLAG入
栈 ④清除TF,IF ⑤获得中断向量,转入中断服务
3. 中断服务
①保护现场 ②开中断 ③中断处理 ④关中断 ⑤ 恢复现
场
[email protected]
回顾上节课的内容
• 中断类型号,中断向量和中断向量表的关系
• EG. 中断类型号为1FH的中断向量为
2345H:1234H,画图说明它在中断向量
表中的存放位置。
1FH*4 = 7CH
39
[email protected]
主要学习内容
§8.1概念及处理过程
1、中断概念
2、中断源
3、中断处理过程
(1)中断请求
(2)中断判优
(3)中断响应
(4)中断服务
①②③④⑤
(5)中断返回
§8.2 8086中断系统
1、中断源与中断类型号
2、中断向量表
3、中断响应过程
4、中断时序
40
§8.3 中断控制器Intel8259A
1、性能
2、结构和工作原理
3、外部引脚和工作过程
4、工作方式
(1)中断优先权管理方式①②③④
(2)中断源屏蔽方式①②
(3)结束中断方式①②③④
(4)与系统总线的连接方式①②
(5)引入中断请求的方式①②③
5、8259A的编程
(1)端口地址
(2)初始化编程ICW1-ICW4
(3)操作编程OCW1-OCW3
6、级联
[email protected]
主要学习重点
• 8259A的内、外部结构
• 8259A的工作过程
• 8259A的工作方式
• 8259A的初始化编程
• 8259A的工作状态控制
41
[email protected]
编程实现
外部不可屏蔽中断
NMI
INTR
8086 微处理器中断逻辑
INTA
INT n
指令
42
INT 3
断点
INTO
溢出
除法
出错
[email protected]
单步
中断
8259A
外
部
可
屏
蔽
中
断
请
求
8.3 可编程中断控制器8259A
8086 CPU可屏蔽中断请求引脚只有一条,而
外部硬件中断源有多个,为了使多个外部中断源能共
享这一条中断请求引脚,必须解决如下几个问题:
外
部
NMI
INTR
可
8086 微处理器中断逻辑
屏
8259A
INTA
蔽
(1)解决多个外部中断请求信号与INTR引脚的连接问题。
中
(2)CPU如何识别是哪一个中断源发送的中断请求问题。
n INT 3 INTO 除法 单步
INT
断
断点
指令
溢出
出错 中断
请
(3) 当多个中断源同时申请中断时,确定响应顺序问题。
求
(4) 中断屏蔽与中断嵌套的管理问题
外部不可屏蔽中断
43
[email protected]
8.3 可编程中断控制器8259A
中
断
控
制
器
的
功
能
1
2
进行优先权级别的判断,把当前优先权最
高的中断源的中断类型号送往微处理器;
进入中断服务后,当优先权更高的外部中
3
4
44
接收外部中断请求,向微处理器发送中断请求;
断请求产生时,中断控制器能够实现中断
的嵌套;
对于优先权较低的中断请求则予以屏蔽。
[email protected]
8.3 可编程中断控制器8259A
中
断
控
制
器
的
功
能
1
2
3
4
45
具有8级优先级,并可通过级联最多扩展至64级;
可通过编程屏蔽或开放接于其上的任一中断
源;
在中断响应周期能自动向CPU提供可编程的
标识码,如8086的中断类型号;
可编程选择各种不同的工作方式。
[email protected]
8.3 可编程中断控制器8259A
二、8259A的内部结构及功能模块
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CS
WR
RD
D7
D6
D5
D4
D3
D2
D1
D0
CAS0
CAS1
GND
28
27
26
25
24
23
22
21
20
19
18
17
16
15
VCC
A0
INAT
IR7
IR6
IR5
IR4
IR3
IR2
IR1
IR0
INT
SP/EN
CAS2
D7~D0
RD
WR
CS
控制逻辑
A0
CAS0
CAS1
CAS2
SP/EN
8259A的引脚图
46
读写
[email protected]
INTA
INT
控制逻辑
数据总线
缓冲器
服务
状态
寄存器
ISR
优先权
处理器
中断
请求
寄存器
IRR
级联缓冲
/比较器
中断屏蔽寄存器IMR
8259A的内部结构
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
8.3 可编程中断控制器8259A
二、8259A的内部结构及功能模块
D7~D0
RD
WR
CS
数据总线
缓冲器
读写
控制逻辑
A0
CAS0
CAS1
CAS2
SP/EN
级联缓冲
/比较器
●中断请求寄存器(IRR)
控制逻辑
服务
状态
寄存器
ISR
INTA
INT
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
中断
IRR是一个8位的锁存器,用
请求
处理器
寄存器
来锁存外部设备送来的IR7
~ IR0
IRR
中断请求信号。当外部中断请求线
IRi有中断请求时,IRR中与之对
应的第i位被置1。这个寄存器的内
中断屏蔽寄存器IMR
容可以被微处理器读出。
优先权
一个8259A可以管理8个中断源
47
[email protected]
8.3 可编程中断控制器8259A
二、8259A的内部结构及功能模块
D7~D0
RD
WR
CS
数据总线
缓冲器
读写
控制逻辑
●中断屏蔽寄存器(IMR)
控制逻辑
INTA
INT
IMR是一个8位的寄存器,用于
IR
服务
IR
中断
优先权
设置中断请求的屏蔽信号。此寄存
IR
状态
请求
处理器
寄存器 IR
寄存器
器的第i位被置1时,与之对应的外
IR
IRR
ISR
IR
部中断请求线IRi被屏蔽,不能向微
IR
IR
处理器发出INT信号。可通过软件
设置IMR内容,确定每一个中断请
中断屏蔽寄存器IMR
求的屏蔽状态。设置IMR也可以起
到改变中断请求的优先级的效果。
0
1
2
3
A0
4
5
CAS0
CAS1
CAS2
SP/EN
48
级联缓冲
/比较器
[email protected]
6
7
8.3 可编程中断控制器8259A
●优先权处理器
D7~D0
RD
WR
数据总线
缓冲器
读写
控制逻辑
CS
控制逻辑
INTA
INT
优先权处理器用于识别和管理
各中断请求信号的优先级别。当几
IR
服务个中断请求信号同时出现时,微处
IR
中断
优先权
IR
状态
请求
处理器
理器响应中断请求时,把优先权最
寄存器 IR
寄存器
IR
IRR
ISR
IR
高的IRR中的“1”送入ISR。当
IR
8259A正在为某一级中断服务时,
IR
若又出现新的中断请求,由优先权
中断屏蔽寄存器IMR
处理器判断新出现的中断请求的优
先级别并决定是否进入多重中断处
理。
0
1
2
3
A0
4
5
CAS0
CAS1
CAS2
SP/EN
49
级联缓冲
/比较器
[email protected]
6
7
8.3 可编程中断控制器8259A
D7~D0
RD
WR
CS
数据总线
缓冲器
读写
控制逻辑
●中断服务状态寄存器(ISR)
INTA
控制逻辑
INT
ISR是一个8位的寄存器,用于
IR
服务
IR
中断
优先权
记录当前正在被服务的所有中断级
IR
状态
请求
处理器
寄存器 IR
寄存器 ,包括尚未服务完而中途被更高优
IR
IRR
ISR
IR
先级打断的中断级。若微处理器响
IR
IR
应了IRi中断请求,则ISR中与之对
应的第i位置1。该中断处理结束前
中断屏蔽寄存器IMR
,要使用指令清除这一位。此寄存
器的内容可以被微处理器读出。
0
1
2
3
A0
4
5
CAS0
CAS1
CAS2
SP/EN
50
级联缓冲
/比较器
[email protected]
6
7
8.3 可编程中断控制器8259A
●控制逻辑
D7~D0
RD
WR
数据总线
缓冲器
读写
控制逻辑
CS
在8259A的控制逻辑电路中
INTA
控制逻辑
INT
,有一组初始化命令字寄存器
ICW1~ICW4和一组操作命令字
IR
服务
寄存器OCW1~OCW3。初始化
IR
中断
优先权
IR
状态
请求
命令字在系统初始化时置入,
寄存器 IR
寄存器 处理器
IR
工作过程中一般保持不变。操
IRR
ISR
IR
作命令字在工作过程中根据需
IR
IR
要设定。控制逻辑电路按照编
中断屏蔽寄存器IMR
程设定的工作方式管理8259A的
全部工作。
0
1
2
3
A0
4
5
CAS0
CAS1
CAS2
SP/EN
51
级联缓冲
/比较器
[email protected]
6
7
8.3 可编程中断控制器8259A
●数据总线缓冲器
D7~D0
这是一个8位的双向三态
RD
读写
服务
缓冲器,是8259A与系统数据
WR
状态
CS
控制逻辑
总线的接口。 A
寄存器
0
1)微处理器向8259A发送命令;
CAS
2)微处理器读取8259A的状态信
级联缓冲
CAS
息;
CAS
/比较器
SP/EN
3)在中断响应周期,微处理器从
中获得中断类型号。
INTA
INT
控制逻辑
数据总线
缓冲器
ISR
优先权
处理器
中断
请求
寄存器
IRR
0
1
2
52
[email protected]
中断屏蔽寄存器IMR
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
8.3 可编程中断控制器8259A
D7~D0
RD
读写
WR
控制逻辑
CS
A0
CAS0
A0
/比较器
RDSP/EN WR
0
0
0
0
0
0
0
1
1
1
1
1
0
0
0
0
0
0
0
1
0
0
1
1
53
服务
状态
寄存器
ISR
优先权
处理器
中断
请求
寄存器
IRR
级联缓冲
CAS1
CAS2
CS
INTA
INT
控制逻辑
数据总线
缓冲器
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
D4
D3
读写操作
中断屏蔽寄存器IMR
0
0
1
x
0
1
x
x
数据总线→OCW2
数据总线→OCW3
数据总线→ICW1
数据总线→ICW2,ICW3,ICW4,OCW1
[email protected]
IRR或ISR或中断级别编码→数据总线
IMR→数据总线
8.3 可编程中断控制器8259A
●级联缓冲/比较器
D7~D0
系统需要扩展而使用多个
RD
读写
WR
8259A时,要有一个8259A作为
CS
控制逻辑
主器件而其他的作为从器件。
A0
级联缓冲/比较器在级联方式的
CAS
主/从结构中,用来控制8259A
级联缓冲
CAS
CAS
/比较器
的级联。与此部件相关的有3根
SP/EN
级联线CAS2-CAS0和1根主从设
备设定/缓冲器读写控制线 SP/ EN
INTA
INT
控制逻辑
数据总线
缓冲器
服务
状态
寄存器
ISR
优先权
处理器
中断
请求
寄存器
IRR
0
1
2
54
[email protected]
中断屏蔽寄存器IMR
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
8259A 的工作过程
55
[email protected]
8.3 可编程中断控制器8259A
三、8259A的工作过程
Step 1:
中断源在中断请求输入端上产生请求
使中断请求寄存器的IRR的相应位置置1,信息锁存
IRR:00110100
56
[email protected]
8.3 可编程中断控制器8259A
三、8259A的工作过程
Step 2:
中断屏蔽寄存器“屏蔽”
结果送优先权处理器判优
假设IMR为00000100,则IR2被屏蔽
57
[email protected]
8.3 可编程中断控制器8259A
三、8259A的工作过程
Step 3:
控制逻辑向CPU发送的INTR引脚发送INT中断请求信号
58
[email protected]
8.3 可编程中断控制器8259A
三、8259A的工作过程
Step 4:
CPU接受请求,在第一个中断响应周期内,从INTA发回第
一个负脉冲,实现握手
59
[email protected]
8.3 可编程中断控制器8259A
三、8259A的工作过程
Step 5:
• 优先权电路检出优先级最高的中断请求位
• 根据检测结果设置ISR:00010000
• 将IRR的相应位置复位
60
[email protected]
8.3 可编程中断控制器8259A
三、8259A的工作过程
Step 6:
• 第二个INTA负脉冲到达时,中断类型号送到CPU
的数据总线的D7-D0上
61
[email protected]
8.3 可编程中断控制器8259A
三、8259A的工作过程
• Step 7:8086CPU读取中断类型号,转移到相
应的中断处理程序;
• Step 8:在中断处理结束之前,中断处理程序向
8259A发送一个EOI(中断结束)命令,使ISR
相应位复位,本次中断响应到此结束。
62
[email protected]
8259A 的级联
63
[email protected]
8.3 可编程中断控制器8259A
INTA
CAS0
CAS1
CAS2
8259A
的
级
联
INTA
CAS0
CAS1
CAS2
IR0
IR1
INTA
???
INT
SP/EN
管理64个中断源需要多少个8259
输出得到响应
的从片编号
SP/EN
IR7
3片8259最多可以管理多少个中断源
CAS0
IR0
INTR
INT
CAS1
CAS2
INTA
+5V
INT
SP/EN
64
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
[email protected]
IR1
IR2
IR3
IR4
IR5
IR6
IR7
8259A的工作方式
• 优先权管理方式


固定优先级
循环优先级
• 中断屏蔽方式


普通屏蔽方式
特殊屏蔽方式
• 中断结束方式


自动结束
非自动结束
• 8259A的工作方式


中断方式
程序查询式
• CPU读8259A的状态
CPU通过编程对 ICW1~ICW4 和 OCW1~OCW3进行读写操作
来实现工作方式的选择和工作状态的读取
65
[email protected]
8.3 可编程中断控制器8259A
四、8259A的工作方式
●8259A的优先权管理
全嵌套方式
固定优先权
特殊嵌套方式
自动循环方式
循环优先权
特殊循环方式
66
[email protected]
8.3 可编程中断控制器8259A
1.完全嵌套方式(单片8259A常用)
8259A的中断请求输入端引入的中断具有固定的优先权排
队顺序,IR0为最高优先级,IR1为次高优先级,依次类推,
IR7为最低优先级。
同一优先级遵循先来后到原则,不能嵌套
 2.特殊全嵌套方式(级联情况下的常用)
特殊全嵌套方式和全嵌套方式基本相同,只有一点不同,
就是在特殊全嵌套方式下,当处理某一级中断时,如果有同
级的中断请求,那么,也会给予响应,从而实现一种对同级
中断请求的特殊嵌套。
同一优先级可以实现嵌套

67
[email protected]
8.3 可编程中断控制器8259A


68
3.自动循环方式
从IR0—IR7引入的中断轮流具有最高优先权。
初始优先级队列规定为
IR0>IR1>IR2>IR3>IR4>IR5>IR6>IR7
如果IR0端正好有中断请求,处理完后
IR1>IR2>IR3>IR4>IR5>IR6>IR7>IR0
如果IR4端正好有中断请求,处理完后
IR5>IR6>IR7>IR0>IR1>IR2>IR3>IR4
4.优先级特殊循环方式
最低优先级是由编程确定的,从而最高优先级也由此而定。
[email protected]
8.3 可编程中断控制器8259A
8259A的工作方式
●8259A中断屏蔽方式
 普通屏蔽方式
由IMR实现,IMR中对应位置“1”实现屏蔽
 特殊屏蔽方式
在一些特殊场合下,在执行某较高优先级的
中断时,还希望开放较低级别的中断请求。
将IMR中的某一位置“1”时,会同时将ISR中
的对应位置“0”
69
[email protected]
●8259A中断结束方式
自动中断结束方式(AEOI)
8259A自动的在中断响应第二个周期的INTA的
后沿上,将ISR对应位置“0”
注意:仅在单片8259A,无中断嵌套的情况下可用
非自动中断结束方式(EOI)
中断服务成都结束返回之前,在程序里向8259A
发送一条 “EOI”指令,把ISR对应位清零
一般中断结束方式:清除哪一位ISR由8259A自动选择
特殊中断结束方式:清除哪一位ISR由人为指定
70
[email protected]
8.3 中断控制器8259A及其应用
四、8259A的工作方式
●8259A的查询工作方式
8259A工作在程序查询方式时,8259A不向微处理器
发INT信号,微处理器通过查询8259A了解有无中断。
查询字格式为:
I × × × × W2 W1 W0
I=1表示有中断请求,I=0表示没有中断请求。W2 W1
W0表示8259A请求服务的最高优先级编码。
[email protected]
8.3 中断控制器8259A及其应用
四、8259A的工作方式
●读8259A的状态
8259A内部的IRR、ISR和IMR的状态可以通
过适当的读命令读到微处理器中,以了解8259A
的工作情况。
上述的各种工作方式,都是通过8259A的初始
化命令字(ICW1~ICW4)和操作命令字
(OCW1~OCW3)来设定的。
[email protected]
8259A的编程
73
[email protected]
8.3 中断控制器8259A及其应用
五、8259A的编程
• 8259的编程分为两个阶段:初始化阶段和操作
阶段。
初始化命令字在系统初始化的时候写入
• 初始化阶段应该在系统加电或复位后由初始化
程序完成。用输出指令向8259置入初始化命令。
操作命令字在开始工作后的任何时候进行
ICW1~ICW4
读写,随时动态操作8259A的工作
• 操作阶段,用输出指令向8259发适当的操作命
令字,实现对8259的状态、中断方式和过程的
控制。
OCW1~OCW3
[email protected]
8.3 中断控制器8259A及其应用
五、8259A的编程
●初始化编程
ICW1
ICW2
ICW3
ICW4
初始化编程的任务:
第一、设定中断请求信号的有效形式,即高电平有效,
还是低电平向高电平跳变的上升沿有效;
第二、是单片工作方式还是级联工作方式;
第三、设定8259管理的中断类型号基值,即0级中断
IR0对应的中断类型号,当中断请求响应时,得到中断
向量表中相应的地址;
第四、级联方式的主从片连接关系确定
第五、设定各级的优先排序规则;
第六、设定一次中断处理结束时的结束操作规则。
通过向8259发初始化命令字ICW实现。
[email protected]
8.3 中断控制器8259A及其应用
五、8259A的编程
●初始化编程
初始化命令字ICW1(设定工作方式,级联方式,嵌套方式和优先权排序方式)
格式:设置ICW1需要I/O地址为A0=0。
D7
D6
D5 D4
D3
D2
D1
D0
×
×
×
1
LTIM
× SNGL
IC4
其中:×表示无关位,可以是任意值,通常置“0”;
LTIM=1:表示有效的中断请求信号是高电平,为0是低电平向高电平跳变
的上升沿;
SNGL=1: 单片工作,为0多片级联;
IC4=1: 表示在后面程序还要设置初始化命令字ICW4,为0
不再设置ICW4; 80X86系统中全都要设置ICW4,所以此位默认为1
D4=1: 是ICW1的特征标志
[email protected]
8.3 中断控制器8259A及其应用
五、8259A的编程
●初始化编程
设置ICW2的地址为A0=1
初始化命令字ICW2:用于设置中断类型号基值。
格式:
D7
D6
D5
D4
D3
D2
D1
T7
T6
T5
T4
T3
0
0
D0
0
其中:
低3位必须为0;
若两片8259A的中断类型号基值分别为08H和70H,
ICW2的高5位T7~T3分别为00001和01110。
[email protected]
8.3 中断控制器8259A及其应用
五、8259A的编程
●初始化编程
初始化命令字ICW2说明:
▲外中断的中断类型号是在中断需要期间由8259提
供的;
▲8259是根据初始化过程中用ICW2命令置入的中断
类型号基值来提供中断类型号。
▲IR0对应的中断类型号是中断类型号基值,一定
能被8整除的正整数。
[email protected]
8.3 中断控制器8259A及其应用
五、8259A的编程
●初始化编程
初始化命令字ICW3:专为级联而设置的。
当只有一片8259A(即设ICW1的D1位为1),则不
设置CW3;当多于一片时,将主片和从片的ICW1中D1
位设置为0;且在设置ICW2之后向A0=1地址设置的才
是ICW3。
ICW3(主片)
1:相应的IR接从属的8259
0:相应的IR接外部中断源
[email protected]
8.3 中断控制器8259A及其应用
五、8259A的编程
●初始化编程
ICW3(从片)
D7
D6
D5
D4
0
0
0
0
D3
D2
D1
D0
0
该3位的编码对应从属8259接主控IR的编号
例如:
从属芯片接到主控芯片的IR2上,则从属芯片
的ICW3对应的是02H;
主片中设置的ICW3为00000100。
[email protected]
8.3 中断控制器8259A及其应用
五、8259A的编程
●初始化编程
初始化命令字ICW4(设定工作方式)
D7
D6
D5
D4
D3
D2
0
0
0
SFNM
BUF
M/S
0 ×非缓冲方式
1 0 缓冲方式/从片
1 1缓冲方式/主片
1-特殊全嵌套方法
0-正常全嵌套方法
[email protected]
D1
AEOI
D0
μPM
1-8086/8088方式
0-8080/8085方式
1-中断自动结束
0-中断正常结束
8.3 中断控制器8259A及其应用
五、8259A的编程
●初始化编程
8259初始化命令字设置次序:
单片工作
Step1: 写命令字ICW1
(偶地址,A0=0,D4=1)
Step2: 写命令字ICW2
(奇地址, A0=1)
Step3: 写ICW4
(奇地址,A0=1)
[email protected]
级联工作
Step1: 写主片ICW1
(A0=0,D4=1)
Step2: 写主片ICW2
Step3: 写主片 ICW3
Step4: 写主片ICW4
Step5: 写从片ICW1
(A0=0,D4=1)
Step6: 写从片ICW2
Step7: 写从片ICW3
Step8: 写从片ICW4
8.3 中断控制器8259A及其应用
五、8259A的编程
• 单片8259初始化举例:
• PC/XT 系统中,8259的工作方式为单片工作,边沿触
发,中断类型号08H~0FH,非缓冲方式,非中断自动
结束,非特殊全嵌套方式。端口地址为20H和21H,写
初始化程序段:
多个8259的初始化就是根据级联
MOV AL, 00010011 B
方式,加入ICW3的初始化过程
OUT
20H, AL
00010011 B B
分析: ICW1: XXX10X11
,如书上P255
例题
8.13
MOV AL,
00001000 B
分析: ICW2:00001000 B
分析: ICW4:00000001 B
83
[email protected]
OUT
21H, AL
MOV
OUT
AL, 00000001 B
21H, AL
8.3 中断控制器8259A及其应用
五、8259A的编程
●操作编程
系统运行中可以向8259发操作命令字,对
8259A管理中断的方式进行修改和设定;8259A
共有OCW1、OCW2和OCW3三个操作控制字。
与初始化命令字ICW不同,OCW不是按照既定流
程写入,而是按需要选择写入。
[email protected]
8.3 中断控制器8259A及其应用
五、8259A的编程
●操作编程
操作命令字OCW1:
用于设置屏蔽状态。用输出指令把OCW1发
送到IMR。
中断屏蔽寄存器IMR中为1 的位对应的中断级
的输入线IR处于被屏蔽状态。
被屏蔽的中断级请求不能使8259的INT输出端
产生有效的请求信号。
设置OCW1的I/O地址是A0=1
[email protected]
8.3 中断控制器8259A及其应用
五、8259A的编程
●操作编程
OCW1
D7
D6
D5
D4
D3
D2
D1
D0
1:屏蔽响应的IR
0:允许相应的IR中断
例如:将42H(01000010B)写入OCW1,则IR6和IR1被
屏蔽,而IR0、IR2、IR3、IR4、IR5和IR7允许中断。
开始工作后,向地址A0=1发的OCW1是屏蔽字,对同一地
址的输入指令将读回OCW1设置的屏蔽字。(对应P248,
表8.1)
[email protected]
• EG. IBM PC微机系统中,8259A的端口地址为
20H和21H,要实现屏蔽IR4的中断输入,但并
不改变其他中断输入的状态,写出程序段.
IN AL, 21H;
读IMR内容
OR AL, 00010000H
OUT 21H, AL; 写OCW1,即改变IMR
87
[email protected]
8.3 中断控制器8259A及其应用
五、8259A的编程
OCW2(A0=0):
功能: 改变/设置中断优先级,发送中断结束指令EOI
D7
R
D6
SL
D5
EOI
D4
0
R=0 固定优先权
R=1 循环优先权
SL=0 表明L2、L1、LO无意义
SL=1 表明L2、L1、LO有意义
EOI=1 表示撤消中断
EOI=0 表示不撤消中断
[email protected]
D3
0
0
0
...
1
D2
L2
D1
L1
D0
L0
0
0
0
1
指定中断级
0
1
1
1
7
8.3 中断控制器8259A及其应用
OCW2(A0=0):
D7
D6
D5
D4
D3
D2
R
SL
EOI
0
0
L2
D1
L1
D0
L0
(1) EOI=0 (优先权模式选择)
 R=0, 固定优先级模式;
 R=1,SL=0:一般循环优先级命令。自动设置IR0为优先级
最高;
 R=1,SL=1:特殊循环优先级命令,L2~L0指示优先级最
低的中断位。
(1) EOI=1
(中断结束命令)
 SL=0, 一般中断结束命令,正在执行的优先级最高的位中断
结束。
 SL=1,特殊中断结束命令,将L2~L0指示的对应位中断结束
89
[email protected]
8.3 中断控制器8259A及其应用
五、8259A的编程
●操作编程
OCW3:用于管理特殊的屏蔽方式和查询方法。设置
OCW3地址的是A0=0 。
D7
D6
D5
D4
D3
D2
D1
D0
0
1
P
RR
RIS
ESMM SMM
0
它的特征标识为D4D3=01
ESMM: 设置/保持屏蔽方式位。0:保持原有屏蔽方式
1:根据SMM的内容设定屏蔽方式
SMM: 特殊屏蔽方式标识, 1:设置为特殊屏蔽方式
0:设置为一般屏蔽方式
[email protected]
8.3 中断控制器8259A及其应用
五、8259A的编程
●操作编程
OCW3(续)
D7
D6
D5
0
ESMM SMM
D4
D3
D2
D1
D0
0
1
P
RR
RIS
P:管理查询方式, 1 指明查询方式,即查询决定优先级次序
0 非查询方式。
RR、RIS:控制读出8259内部寄存器IRR和ISR的内容。
10 读寄存器IRR
11 读寄存器ISR
00、01 无意义,其中P=0
[email protected]
8.3 中断控制器8259A及其应用
五、8259A的编程
●操作编程
当P=1时的OCW3可用作查询指令。下一条对同一地
址(A0=0)的读指令起中断识别作用,其操作是,如当时
有中断请求,将识别出优先级最高的中断请求,把ISR的
相应位置1,同时输入一个字节的信息到CPU(AL),这个
字节信息的格式如下:
1
-
-
-
-
W2
W1
W0
位7=1:表示有中断请求,W2-W0指明请求服务的
各中断级中的最高优先级,否则无中断请求。
[email protected]
• EG:在8259A工作过程中,观察IRR的内容,发
给DL,观察IMR的内容发给DH,观察ISR的内
容发给CL,8259的地址为20H,21H
分析:
 IMR的读取,A0=1
 IRR的读取,先写OCW3
,置PR,RIS为10,再读
取A0=0的内容
 ISR的读取,先写OCW3
,置PR,RIS为11,再读
A0=0的内容
93
[email protected]
IN
AL, 21H;
MOV DH, AL;
OUT
IN
MOV
OUT
IN
MOV
20H,
AL,
DL,
20H,
AL,
CL,
读入IMR
00001010B; 写OCW3
20H;
读入 IRR
AL;
00001011B; 写OCW3
20H;
读入ISR
20H;
中断方式的输入输出程序设计
94
[email protected]
8.3 中断控制器8259A及其应用
六、中断方式输入输出程序设计
●主程序设计
1、微处理器初始化:设置堆栈,设置中断向量,
开放中断。
2、中断控制器8259A的初始化:选择工作方式,
设置优先级规则,清除相应的屏蔽位等。
3、接口的初始化:将接口恢复到初始状态,对于
可编程的接口,要设置接口的工作方式,设置接
口的中断开放位等。
[email protected]
8.3 中断控制器8259A及其应用
六、中断方式输入输出程序设计
●主程序设计
4、中断服务程序的初始化:设置中断服务程序使
用的缓冲区指针、计数器、状态位等。
5、对于输出过程,应在主程序中启动第一次输出
,否则不会发生输出中断。
[email protected]
8.3 中断控制器8259A及其应用
六、中断方式输入输出程序设计
●中断服务程序设计
1、保护现场:把所有中断服务程序里要使用、会
改变值的寄存器压入堆栈。注意:中断服务程序
所使用的指针、缓冲区等都存放在内存储器中。
2、开放中断:允许微处理器响应优先级更高、更
紧急的中断。
3、输入输出处理
[email protected]
8.3 中断控制器8259A及其应用
六、中断方式输入输出程序设计
●中断服务程序设计
4、关闭中断:中断服务进入结束阶段,关闭中断
可以避免不必要的中断嵌套。
5、恢复现场:按照“先进后出”的原则,恢复
各寄存器的内容。
6、中断返回:用IRET指令返回被中断的程序
[email protected]
8.3 中断控制器8259A及其应用
七、中断方式应用举例
例8.1
在某微机系统中配置了一片8259A可编程中断控
制器芯片,且初始化为完全(正常)嵌套方式,即中
断优先权的级别是固定的,IR0优先权最高,IR1~IR6
逐级次之,IR7最低。IR0~IR7均未屏蔽,CPU处于开
中断状态,在每个中断服务程序开始均排有STI指令
。若在CPU执行程序期间,IR2和 IR4同时有中断请求
,在IR2服务期间(服务结束前),IR1有中断请求,
在IR4服务期间,IR3有中断请求。试画出完全嵌套方
式的中断响应过程示意图。
[email protected]
8.3 中断控制器8259A及其应用
七、中断方式应用举例
正在执行
的程序
IRQ2
IRQ1
IRQ2 IRQ4
同时请求 服务程序 IRQ1 请求 服务程序
1
位置
STI
2
ISR
置1
位
1
R
IS
STI
ISR1位清0
IRET
IRET
位
R4
IS
ISR2位清0
IRQ4
IRQ3
服务程序 IRQ3请求 服务程序
置
1
STI
置
ISR 3位
1
IRET
ISR3位清0
IRET
ISR4位清0
[email protected]
STI
8.3 中断控制器8259A及其应用
七、中断方式应用举例
例8.2
若要开发一条INT 40H软件中断指令,该
指令完成的功能为光标回车换行。设中断
服务程序的入口地址为INTRUP,使编写完
成此功能的主程序和中断服务程序。
回忆软件子程序调用
分析其与软件中断指令的异同
课本 P 67
[email protected]
8.3 中断控制器8259A及其应用
七、中断方式应用举例
例8.2
…..
PUSH DS
; 关中断,开始建立中断向量
MOV AX, 0
MOV DS, AX
; 使DS指向中断向量表的段地址
MOV BX, 40H*4
MOV AX, OFFSET INTRUP
MOV [BX], AX
; 将INTRUP的偏移地址放在IP位置上
MOV AX, SEG INTRUP
MOV [BX]+2, AX ; 将INTRUP的段地址放在ICS位置上
POP
DS
…..
…..
INT 40H
;调用 40H号软件中断,使光标回车换行
…..
[email protected]
8.3 中断控制器8259A及其应用
七、中断方式应用举例
例8.2
中断服务程序
INTRUP:PUSH
PUSH
MOV
MOV
INT
MOV
MOV
INT
POP
POP
IRET
AX
DX
; 保护现场
AH , 02H ; 显示回车
DL , 0DH ;
21H
AH, 02H ; 显示换行
DL, 0AH ;
21H
DX
; 恢复现场
AX
[email protected]
回顾本章主要学习重点
• 与中断相关的概念
• 中断过程
• 中断响应过程
• 中断服务子程序过程
• 8259A的内、外部结构
• 8259A的工作过程
• 8259A的工作方式
• 8259A的初始化编程
• 8259A的工作状态控制
104
[email protected]
编程实现
作 业
P265-266
8.4 8.5,8.6,8.18,8.19,8.20
105
[email protected]
Thank you
教师: 王晓甜
[email protected]