微机原理 中断及+程序8259
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
33
(2)一般中断结束(EOI)方式:
(适用于全嵌套方式,即知道优先 级的情况下) CPU发一般中断结束命令(OCW2中 EOI为1,SL为0),使8259当前ISR 中最高的非零IS位复位
34
(3)特殊中断结束(E0I)方式:
(主要适用于循环方式,即不知道 当前中断服务优先级的情况下) CPU发特殊中断结束命令(OCW2中 EOI为1,SL为1),使8259当前ISR 中由OCW2的L2、L1、L0位指出的IS 位复位
43
奇 地 址
ICW4(方式控制初始化命令字)
D6
0
D7
0
D5
0
D4
SFNM
D3
BUF
D2
M/S
D1
AEOI
D0
μPM
嵌套方式: 数据线的缓冲方式: 主片/从片选择: 特殊全嵌套方式(SFNM=1) 中断结束方式: 缓冲方式(BUF=1) 微处理器类型: 主片(M/S=1) 普通全嵌套方式(SFNM=0) 自动中断结束(AEOI=1) 非缓冲方式(BUF=0) 16位8086(PM=1) 非自动中断结束(AEOI=0) 从片(M/S=0) 8位8080/8085(PM=0)
D0~D7接数据总线低8位(AD0~AD7) 接收命令字(8位) 输出中断类型码(8位)、查询字
(8位)和相关寄存器的状态(8位)
19
3. 级联缓冲/比较器
CAS2~CAS0用于指出8个从片的地址;
SP#/EN#可用于输入/输出,输入(SP#)
决定主(1)/从片(0),输出(EN#) 控制总线驱动器8286(缓冲器)工作。
12
3 硬件中断的响应和时序
可屏蔽中断的响应过程 :(CPU自动执行) ① 读取中断类型码 ② 将标志寄存器FR的值推入堆栈(IF=?) ③ 把标志寄存器的IF和TF清零 ④ 将断点地址保护到堆栈中。(CS:IP) ⑤ 寻找中断向量,转入中断处理程序
13
8086的中断响应时序 :
14
中断响应用2个总线周期
22
8. 控制部件
输出中断请求信号INT至CPU INTA#接收来自CPU的中断应答
信号,应为2个负脉冲才有效;
23
CPU中断响应之后8259的动作:
1)第一个负脉冲:IRR锁存失效,
ISR相应位置1,IRR相应位清0; 2)第二个负脉冲:送出中断类型 码;若是中断自动结束方式 (AEOI),则ISR相应位清0。
指令中断
在执行中断调用指令INT
n时产生的一 个类型号为n(0 ~ 255)的内部中断, 称为指令中断
4
除法错中断
在执行除法指令时,若除数为0或商超过 了寄存器所能表达的范围,则产生一个类 型号为0的内部中断,称为除法错中断 例如:mov bl,0
div bl
;除数BL=0,产生除法错中断
2
可屏蔽中断
外部通过可屏蔽中断请求信号引脚(INTR) 向微处理器提出的中断,微处理器在允许 可屏蔽中断(IF=1)的条件下,在当前指 令执行结束予以响应,同时输出可屏蔽中 IF控制可屏蔽中断的响应 断响应信号(INTA#),这个中断就是可屏 蔽中断 8086通常需要配合中断控制器8259A共同处 理可屏蔽中断,中断类型号由8259A发出 可屏蔽中断主要用于主机与外设交换数据 3
第1个总线周期,通知外设,CPU准备 响应中断; 第2个总线周期,外设(8259A)发送中 断类型码
15
4 中断处理子程序
① ② ③ ④ ⑤ 保护现场(PUSH) 开放中断(原因) 中断处理的具体内容 恢复现场(POP) 中断返回指令( IRET ) ?
16
7
中断控制器8259A
7.1 8259A的内部结构 7.2 8259A的工作方式 7.3 8259A的初始化命令字和操 作命令字 7.4 8259A使用举例
44
BUF、M/S和SP#/EN#定义
BUF 非缓冲 方式 M/S SP# 0 无意义 (输 入信 号) EN# (输 出信 号) SP#/EN# 1 0 主8259 从8259 CPU→8 259 8259 45 →CPU
1
缓冲方 式
1
0
主8259
从8259
1
0
2.
初始化流程
1
2
3
4
46
对初始化流程的几点说明 ① ICW1写入偶端口,ICW2~ICW4写入 奇端口 ② ICW1和ICW2必须设置(所有系统每 个芯片),ICW3(只在级联系统) 和ICW4(16位系统要设置特殊方式 时)非必须 ③ 在级联时,主片和从片分别设置 ICW3
17
7.1
D7~D0 数据 总线 缓冲器 读/写 控制 逻辑 级联 缓冲器 比较器
8259A的内部结构
INTA
控制部件
INT
RD WR A0 CS CAS0 CSA1 CAS2 SP/EN
中 断 服 务 寄 存 器
优 先 权 判 别 器
中 断 请 求 寄 存 器
IR0
IR7
中断屏蔽寄存器
18
1.数据总线缓冲器
37
中断操作编程
在8259A工作期间 可以写入操作命令字OCW将选定
的操作传送给8259A,使之按新的 要求工作 还可以读取8259A的信息,以便 了解他的工作状态
38
1. 初始化命令字ICW
初始化命令字ICW最多有4个 8259A在开始工作前必须写入 必须按照ICW1~ICW4顺序写入
ICW1和ICW2是必须送的
ICW3和ICW4由工作方式决定
39
偶 地 址
ICW1(芯片控制初始化命令字)
D6
×
D7
D5
×
D4
1
D3
LTIM
D2
×
D1
SNGL
D0
IC4
×
×——表示可以任意 1——只能为1,作为标志 中断触发方式: 规定单片或级连方式: 为1为0都可以(建议为0) (与OCW2和OCW3区分) 是否写入ICW4 LTIM=1,电平触发方式 SNGL=1,单片方式 IC4=1,要写入ICW4 LTIM=0,边沿触发方式 SNGL=0,级连方式 IC4=0,不写入ICW4,即 ICW4规定的位全为0
mov ax,200h mov bl,1 div bl ;商=200H,不能用AL表达 ;产生除法错中断
5
单步中断
若单步中断标志TF为1,则在
每条指令执行结束后产生一个 类型号为1的内部中断,称为 单步中断
6
断点中断(INT 3)
其中类型号为3的内部中断,
常用于程序调试,被称为断点 中断
7
溢出中断(有符号数加减运算)
8086的中断(P99)
8086的中断系统采用中断向量机制 能够处理256个中断
用中断类型号0~255区别
1 8086/8088的中断分类 硬件中断 (非屏蔽中断和可屏蔽中断) 软件中断(中断指令和内部中断)
1
非屏蔽中断
通过非屏蔽中断请求信号引脚(NMI)向微 处理器提出的中断请求,微处理器无法禁止, 将在当前指令执行结束予以响应,这个中断 被称为非屏蔽中断 8086的非屏蔽中断的类型号为2 非屏蔽中断主要用于处理系统的意外或故障。
20
4. 中断请求寄存器IRR 8位寄存器,可锁存由外部输入的中断 请求信号IR7~IR0 5. 中断服务寄存器ISR 8位寄存器,用来记录正在处理中的中 断请求
21
6. 中断屏蔽寄存器IMR 8位寄存器,用来存放对各级中断请求的 屏蔽信息。 7. 优先权判别器PR 多个中断同时产生,判断优先响应哪个 出现多重中断,判断是否打断当前中断 操作
ISR 原始 内容 状态 优先
级 处理 ISR 完 优先 IR2 级 处理 ISR 完 优先 IR6 级
0 4
0 0
1 3
0 7
0 2
0 6
0 1
0 5
0 0
0 4
0 7
0 3
0 6
0 2
0 5
0 1 29
(4)特殊循环方式:(优先
级相同的系统)
与普通循环方式唯一不同是一开始的
最低优先级由程序确定(最高也就确 定),而非IR0。
40
奇 地 ICW2(中断类型码初始化命令字) 址
D7
T7
D6
T6
D5
T5
D4
T4
D3
T3
D2
D1
D0
×
×
×
设置中断类型号 T7~T3为中断类型码的高5位 低3位由8259A自动确定: IR0为000、IR1为001、……、 IR7为111
41
说明:
IRi的中断类型码
= ICW2的高5位 ( 不 管 低 三 位 是 否 相 同 ) + i( 由 IR0~IR7) 例:如果ICW2设为19H,则IR3的中 断类型码(×4为中断向量地址) 为 18H(取高五位)+03H=1BH。
10
11
例:中断类型号为10的中断处理子程序存放 在1234H:5678H开始的内存区域中,求中 断向量地址及其每个单元中所存放的数值。 10×4=40=28H
求得中断向量物理地址是00028H~ 0002BH
按8086存储原则,从00028H~0002BH 的每个单元中分别存放78H、56H、34H、 12H
26
(2)特殊全嵌套方式:(级联系统)
0级最高,但同级中断也会响应、
嵌套。级联系统中的主片必须使用 该方式,保证来自同一从片但不同 优先级的中断请求能被响应。
INTR INT IR2 INT
IR0 IR7
主8259A
从8259A
27
(3)普通循环方式:(优先级
相同的系统)
设备中断请求被响应并执行中断服
31
2. 结束中断处理的方式
必要性:中断服务程序结束后,要使
相应ISn清0,否则,低级或同级的中 断再就不可能被响应,导致中断系统 功能异常。 区别:就是使ISn清零的方法不同。
32
(1)中断自动结束(AEOI)方式I位设置,CPU响应中 断即自动清0相应的ISn,在INTA# 的第二个负脉冲时完成。
42
奇 地 址
ICW3(主/从片初始化命令字)
D6
IR6 0
D7
D5
IR5 0
D4
IR4 0
D3
IR3 0
D2
IR2 ID2
D1
IR1 ID1
D0
IR0 ID0
IR7 0
主片8259A:IRi=1对应IRi引脚 接有从片;否则IRi引脚没有接 从片 从片8259A:ID0~ID2编码说明 从片INT引脚接到主片哪个IR引 脚
35
3 . 引入中断请求的方式
(1)边沿触发方式:
上升沿有效 (2)电平触发方式: 高电平有效 注意:必须及时撤除中断请求,否则 可能反复响应同一中断。
36
9.1.3 8259A初始化命令字和操作 命令字
初始化编程
8259A开始工作前,必须进行初始
化编程 给8259A写入初始化命令字ICW
微机原理中断及程序8259 8086p99 8086256 80868259a 8259a movbl,0 divbl bl movax,200h mov bl,1 div bl 200h al csip 32 808600000h 2561kb 1011 101234h 5678h 10 4028h 00028h0002bh 8086 00028h 0002bh 78h 56h 34h 12h cpufr tfcs:ip 13 8086 14 17inta intrd wr cscas0 csa1 cas2 sp/en ir0 ir7 18 pr22 intcpu ?inta# cpu 2425 intrint ir2 int ir0 ir7 8259a 8259a 27 28isr isr ir2 isr ir6 ir7 is7 ir6is6 ir5is5 ir4is4 ir3is3 ir2is2 ir1is1 ir0is2 30isr isr ir7 is7 ir6is6 ir5is5 ir4is4 ir3is3 ir2is2 ir1is1 ir0is2 44buf sp#/en#buf sp#sp#/en# 82598259 cpu8259 8259 45 cpu 4647 48 53eoi 20h 60h~67h a0h e0h~e7h 80h 00h c0h~c7h 54 557.4 8259a 1hz8259a ir2 cpu 8255pa 568259 iowior intwr inta rd 74ls138sp/en intr inta vcc cs8259a ir0 ir2 1hz ir757 reset iowior 74ls138 8255 rstwr rd +5v cs 8255a led start:xor ax,ax mov es,ax cld mov di, 0028h movax, offset int_2 stosw mov ax, seg int_2 stosw ir259 8259 moval,13h mov dx,650h out dx,al mov al,08h mov dx,652h out dx,al mov al,01h out dx,al mov al, 0fbh out dx,al ocw160 8255 moval,80h mov dx,666h out d
47
对8259A设置初始化命令字的例子
MOV OUT MOV OUT MOV OUT AL,13H(00010011B) 80H,AL ; 设 置 ICW1( 单 片 8259,设置ICW4) AL,18H(00011000B) 81H,AL ;设置ICW2(中断类型 码是18H~1FH) AL,0DH(00001101B) 81H,AL ;设置ICW4(非特殊全 嵌套,缓冲,非中断 自动结束方式,16位系统) 48
在执行溢出中断指令INTO时,
若溢出标志OF为1,则产生一 个类型号为4的内部中断,被 称为溢出中断
8
8086/8088的中断分类 :
9
2 中断向量和中断向量表
中断向量:中断服务子程序的入口地址(首 地址) 入口地址含有段地址CS和偏移地址IP(32位) 类型号为N的中断向量的 每个中断向量的低字是偏移地址IP、高字是 物理地址=N×4 段地址CS,需占用4个字节 8086微处理器从物理地址00000H开始,依次 安排各个中断向量,类型号也从0开始 256个中断占用1KB区域,就形成中断向量表
务程序后,其优先级自动降为最低, 原先低一级中断成为最高优先级。 但该方式开始总是IR0优先级最高。
28
普通循环方式举例
中断源 IR7 IS7 0 7 IR6 IS6 1 6 IR5 IS5 0 5 IR4 IS4 0 4 IR3 IS3 0 3 IR2 IS2 1 2 IR1 IS1 0 1 IR0 IS2 0 0
30
特殊循环方式举例
中断源
ISR 原始 内容 状态 优先 级
IR7
IS7 0 7 0 2
IR6
IS6 1 6 1 1
IR5
IS5 0 5 0 0
IR4
IS4 0 4 0 7
IR3
IS3 0 3 0 6