第 4 章 微型计算机的中断系统

82
第4第 第第第第第第第第第4.1 第第第第 4.2 8086 CPU 第第第4.3 第第第第第第第第 8259A 4.4 第第第第第第第第

Upload: gannon

Post on 12-Jan-2016

189 views

Category:

Documents


0 download

DESCRIPTION

第 4 章 微型计算机的中断系统. 4.1 中断原理 4.2 8086 CPU 中断系统 4.3 可编程中断控制器8259 A 4.4 中断方式输入输出. 4.1 中断原理. 4.1.1 中断的基本概念. 1. 中断 由于某个事件的发生, CPU 暂停当前正在执行的程序,转而执行处理该事件的一个程序。 该程序执行完成后, CPU 接着执行被暂停的程序。 这个 过程 称为中断。. 2. 中断源 引发中断的事件称为中断源 内部中断(在 CPU 内部的中断源): 程序异常(运算溢出等), - PowerPoint PPT Presentation

TRANSCRIPT

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

第 4 章 微型计算机的中断系统

4.1 中断原理

4.2 8086 CPU 中断系统

4.3 可编程中断控制器 8259A

4.4 中断方式输入输出

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

4.1 中断原理 4.1.1 中断的基本概念

1 . 中断 由于某个事件的发生, CPU 暂停当前正在执行的程序,转而执行处理该事件的一个程序。

该程序执行完成后, CPU 接着执行被暂停的程序。 这个过程称为中断。

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

2 . 中断源• 引发中断的事件称为中断源• 内部中断(在 CPU 内部的中断源):

程序异常(运算溢出等), 陷阱中断(例如,单步运行程序等), 软件中断(执行特殊指令)等。

• 外部中断(发生在 CPU 外部的中断): 外部故障(电源故障,存储器读写校验错) 外部事件(定时时间到,外部特殊信号) IO 事件(外部设备完成一次 IO 操作,请求数据传输)

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

3 . 中断类型用若干位二进制表示的中断源的编号。

4 . 中断断点由于中断的发生,某个程序被暂停执行。

该程序中即将执行,由于中断没有被执行的那条指令的地址称为中断断点,简称断点。

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

5 . 中断服务程序• 处理中断事件的程序段称为中断服务程序。 如:故障中断服务程序,输入输出中断服务程序。• 不同类型的中断需要不同的中断服务程序。• 中断服务程序不同于一般的子程序:

子程序由某个程序调用,它的调用是由程序设定的,

它的执行时间是确定的。 中断服务程序由某个事件引发,它的执行一般是随 机的,不确定的。

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

6 . 中断系统为实现计算机的中断功能而配置的相关硬件、软件

的集合称为中断系统。

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

4.1.2 中断工作方式的特点1. 并行处理能力

实现 CPU 和多个外设同时工作,提高 CPU 效率。

2. 实时处理能力 计算机应用于实时控制时,对外部事件及时响应。

3. 故障处理能力及时处理故障,不影响其他程序的运行。

4 . 多道程序或多重任务的运行 在操作系统的调度下,运行多道程序或多重任务。

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

4.1.3 中断管理

1. 对中断全过程的控制• 中断源发出中断请求时, CPU 能决定是否响应这一中断。• 若允许响应这个中断请求, CPU 在保护断点后,将控制转移到相应的中断服务程序去• 中断处理完, CPU 返回到断点处继续执行被中断的程序。

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

2. 中断源的识别 • 软件识别:

响应中断后, CPU 进入中断处理程序。 在这个程序里, CPU 逐个查询各中断源的状态,确 定是哪一个设备申请了中断。

• 硬件识别: 响应中断后, CPU 进入一个“中断响应周期”。在这个周期里,申请中断的设备向 CPU 发送它的中断类型。

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

3 . 中断的优先权 优先权:有多个中断源同时提出中断请求时, CPU

响应中断的优先次序。

( 1)软件查询法

( 2)分类申请法

( 3)链式优先权排队——菊花链法

( 4)可编程中断控制器——“向量”优先权排队

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

图 4-1

设备3

接口

设备2

接口

设备1

接口

+5V

CPU以及总线控制逻辑

INTA

INTR

INTA

INTR

≥1 INTA

中断请求1=有0=无

中断应答

菊花链中断优先级排队电路

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

4. 中断嵌套• CPU 在处理中断过程中,如果出现了级别更高的中断 请求, CPU 停止执行低级中断的处理程序而去优先处 理高级中断。• 等高级中断处理完毕后,再接着执行低级的未处理完 的程序。• 这种中断处理方式称为多重(级)中断或中断嵌套。• CPU 在响应中断时已将 IF 清零,一定要在中断处理程 序中加入开中断指令,才有可能进行中断嵌套。

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

中断嵌套

  

主程序 1外设 中断服务程序 2外设 中断服务程序

IRET IRET

1外设中断请求

2外设中断请求

① 1响应中断 ② 2响应中断

③中断返回④中断返回

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

4.1.4 中断过程

1 .中断源请求中断( 1 )外部中断源 由外部硬件产生可屏蔽或不可屏蔽中断的请求信号;( 2 )内部中断源 在程序运行过程中发生了指令异常或其他情况。( 3 )中断屏蔽 CPU 用程序的方法允许某些中断源发出中断请求,而禁止某些中断源请求中断• 在外设的接口内增设一个中断屏蔽触发器• Q=0 时,中断请求不能发往 INTR ;• 适当地设定中断屏蔽触发器的状态,可以控制中断 请求信号是否能够送到 INTR 端

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

2 . 中断响应

( 1) 响应可屏蔽中断必须同时具备以下条件: CPU 处于允许中断状态( IF=1 );

没有不可屏蔽中断请求和总线请求 ;

当前指令执行结束。

( 2) 响应不可屏蔽中断必须同时满足以下条件: 没有总线请求; 当前指令执行结束。

( 3) 响应内部中断的条件: 当前指令执行结束。

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

CPU 接受中断请求后转入中断响应周期:( 1 )识别中断源,取得中断源的中断类型;

( 2 )将标志寄存器 FLAGS 和 CS 、 IP (断点)先后压入 堆栈保存;

( 3 )清除自陷标志位 TF 和中断允许标志位 IF ;

( 4 )获得相应的中断服务程序入口地址,转入中断服务 程序。

中断响应周期

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

图 4-3

中断过程

识别中断源FLAGS, CS, IP进栈

TF, IF清 标志读中断向量表转入中断服务程序

保护现场开中断中断处理关中断恢复现场中断返回

主程序 中断响应周期 中断服务程序

断点

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

3 . 中断服务 ( 1 )保护现场 : 保护中断服务时要使用的寄存器 (压栈 ) ;

( 2 )开中断 : 中断服务时能响应更高级的中断请求;

( 3 )中断处理:执行输入输出或非常事件的处理;

( 4 )关中断 : 恢复现场时不被新的中断打扰;

( 5 )恢复现场 : 将堆栈中保存的内容弹出;

( 6 )中断返回 :通过中断返回指令 ,弹出IP,CS,FLAGS , 程序回到被中断的地址,恢复中断前的状态。

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

4.2 8086 CPU 中断系统

4.2.1 8086 的中断类型中断类型:用 8 位二进制表示,可以有 256 个不同的中断 ;

中断请求输入引脚: NMI、 INTR;

中断优先级: INT 0(除法溢出)→溢出中断( INTO →) INT n 指令 → NMI → INTR → 单步中断。

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

图 4-4

不可屏蔽中断

8086微处理器中断逻辑

INT n指令

INT 3指令

INTO指令

除法溢出

单步中断

8259A

NMI

INTR

可屏蔽中断请求

8086 CPU 中断

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

1. 可屏蔽中断 IF= 0 时, CPU 不响应 INTR 的中断请求 ;

IF= 1 时, CPU 响应 INTR 的中断请求。 用 STI 指令使 IF=1 ,称为开中断;

用 CLI 指令使 IF=0 ,称为关中断。 系统复位后,或 CPU 响应了任何一种中断后,都会使

IF=0 。

应使用 STI 指令使 IF=1 ,确保中断开放。 可屏蔽中断源由 8259A 统一管理,每片 8259A 可以接

受 8 个外部设备的中断请求。

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

2 . 不可屏蔽中断 NMI 接收上升沿触发的中断请求信号 ;

输入脉冲应大于两个时钟周期 ;

CPU 对 NMI 中断请求的响应,不受中断允许标志位

IF 控制 ;

NMI 中断类型码固定为 2 。

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

3 . 内部中断 ( 1 )除法溢出中断( n=0 ):

除数为零或商超过寄存器所能表达的范围。

( 2 )单步中断( n=1 ) :TF=1 ,每执行完一条指令产生一次中断。用于实现单步操作,是强有力的调试手段。

( 3 )断点中断 ( n=3 ) : INT 3 指令产生一个中断类型码为 3 的断点中断。

( 4) INTO 指令 ( n=4 ) : OF=1 ,则 INTO 指令引起类型码为 4 的内部中

断; OF=0 ,此指令不起作用,程序顺序执行。

( 5 ) INT n 指令

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

中断向量:中断服务程序的入口地址; 8086 的中断向量表从内存 00000H 开始存放; 每个中断向量占用 4 个字节; 中断服务程序入口的偏移地址存入两个低地址字节, 入口的段基址存入两个高地址字节; 256 个中断向量占用 00000H~003FFH共 1024 个字节。

4.2.2 8086 的中断向量表

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

图 4-5

8086的中断向量表

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

AH=35H

AL= 中断类型 INT 21H →把原有的中断向量送 ES:BX

AH=25H

AL= 中断类型DS:DX= 中断向量 INT 21H →把新的中断向量送中断向量表

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

1. 不可屏蔽中断 NMI 不受 CPU 内部中断允许标志 IF 的约束,优先权高于INTR;

中断类型号 2 ;采用边沿触发(上升沿)方式

( 1 )标志寄存器压入堆栈( 2 )清除 IF标志和 TF标志( 3 )保存断点,把断点处的 CS 和 IP 内容先后压入堆栈( 4 )取出中断服务程序的入口地址,送入 IP 和 CS

( 5 )进入中断服务程序

用途:主板上 RAM奇偶错, I/O通道中的奇偶校验错, 8087协处理器异常中断。

4.2.3 8086 对外部中断的响应

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

2 .可屏蔽中断 INTR

• 外设的中断请求首先送到 8259A ,按照中断优先权排队 ;

• 电平触发方式,高电平有效。

响应过程: 第一个 INTA 总线周期,通知外部做好准备; 第二个 INTA 总线周期,从外部获取中断类型号; 执行总线写周期,把 FLAGS压入堆栈,并清除IF , TF ;

执行总线写周期,把 CS 内容压栈; 执行总线写周期,把 IP 内容压栈; 执行总线读周期,中断服务程序入口偏移地址送入 IP ;

执行总线读周期,中断服务程序入口段基址送入 CS 。

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

4.3 可编程中断控制器 8259A

接收 8路外部中断请求,通过级联可以扩展至 64 级; 优先权排队和控制,优先权方式可选; 中断嵌套功能; 向 CPU 提供中断类型号; 对每一级编程进行屏蔽或开放。

4.3.1 8259A 的基本功能

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

DB7~DB0 :双向三态数据总线 ;

IR7~IR0 : 外设向 8259A 发出的中断请求信号,输入。

A0 : 地址线,输入,用于选择内部端口。

CS# : 片选信号,输入、低电平有效。

RD# : 读信号,输入、低电平有效。

WR# : 写信号,输入、低电平有效。

INTA# : 中断响应信号,输入、低电平有效。

INT : 中断请求信号,输出、高电平有效。

CAS2~CAS0 :双向的级联线。

SP/EN : 主从设备设定 /缓冲器读写控制,双向双功能

4.3.2 8259A 引脚及内部结构

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

图 4-6

8259A引脚

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

图 4-7

8259A 的内部结构

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

2. 中断请求寄存器 IRR 锁存外部设备送来的 IR7~IR0 中断请求信号 ;

中断请求线变为高电平时, IRR 中与之对应的一位被置 1;

寄存器的内容可以被 CPU 读出。

3. 中断屏蔽寄存器 IMR 记录对每一级中断的屏蔽信号; 置 1 时,对应的外部中断请求线被屏蔽; 设置 IMR起到改变中断请求优先级的效果。

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

4. 中断服务状态寄存器 ISR 记录当前正在被服务的所有中断级 ;

CPU 响应 IRi 中断请求, ISR 中对应第 i 位置 1;

中断处理结束前,要使用指令清除这一位 ;

寄存器可以被 CPU 读出。

5 .优先权处理器 识别和管理各中断请求信号的优先级别 ;

多个中断请求信号同时出现时,优先权处理器根据 控制逻辑规定的优先级规则和 IMR 的内容来判断这 些请求信号的最高优先级。

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

6 .控制逻辑 初始化命令字寄存器 ICW1~ICW4:

在系统初始化时置入,工作过程中保持不变。

操作命令字寄存器 OCW1~OCW3:

工作过程中根据需要设定。

7 . 数据总线缓冲器 8 位的双向三态缓冲器,是 8259A与系统数据总线

的接口。

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

8 .读 / 写控制逻辑 接收、执行 CPU 的读 / 写命令。

9 .级联缓冲 / 比较器 在级联方式的主 /从结构中,用来控制 8259A 的级联。

缓冲器: SP/EN 输出低电平时,开启双向缓冲器。

级联比较器:

主 8259A :用 CAS2~CAS0 输出被选中从片代码;从 8259A: 接收主器件送来的从片选择代码

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

1 . 8259A 的工作过程( 1 )中断源在 IR0 ~ IR7上产生中断请求 ;

( 2 )中断请求被锁存,经 IMR“ 屏蔽”,送优先权电路判优 ;

( 3 )控制逻辑接收中断请求,向 CPU 输出 INT 信号 ;

( 4 ) CPU 接受 8259A 的 INT 信号 , 进入连续两个 INTA周期( 5 )优先权电路将最高优先权对应 ISR 中的位置位;( 6 )第二个 INTA 周期把中断类型号输出到数据总线;( 7 ) CPU 读取中断类型号,转移到相应的中断处理程序。( 8 )中断处理结束前,向 8259A 发送 EOI (中断结束)命 令,使 ISR 相应位复位,本次中断到此结束。

4.3.3 8259A 的工作方式

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

2 . 8259A 的优先权管理 ( 1 )固定优先级

中断源的优先级由它所连接的引脚编号决定 ;

全嵌套方式 :中断优先权级别固定, IR0 优先权最高, IR7最低。

特殊全嵌套 :接收同一引脚上的第二次中断请求。

( 2 )循环优先级各个中断申请具有大体相同的优先级;有优先权自动循环方式和优先权特殊循环方式。

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

3. 中断屏蔽方式( 1 )普通屏蔽方式

通过将中断屏蔽字写入 IMR 实现; 写入某位为“ 1” ,对应的中断请求被屏蔽;为“ 0”开放。

( 2 )特殊屏蔽方式 采用特殊屏蔽方式并用屏蔽字对 IMR 中某一位置“ 1” , 会同时使 ISR 中对应位清“ 0” 。 对屏蔽位的设置部分地改变了中断优先权。

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

4. 中断结束方式中断结束命令( EOI) :

将 ISR 中的相应位清“ 0” ,表示中断处理结束。

( 1 )自动中断结束方式( AEOI) 8259A 在第二个中断响应周期 INTA 信号的后沿,自动 将 ISR 中被响应中断级的对应位清“ 0” 。

( 2 )非自动中断结束方式( EOI) 从中断服务程序返回前,在程序里向 8259A 输出一个中 断结束命令( EOI ),把 ISR 对应位清“ 0” 。

一般的中断结束方式:由 8259A自动选择优先权最高的位。特殊的中断结束命令:指令内指明要清除 ISR 中的某一位。

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

注意 !

在非自动中断结束方式下,如果在程序里忘了发送中断结束命令,那么, 8259A将不再响应这个中断以及比它级别低的中断请求。

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

5. 8259A 查询工作方式 工作在程序查询方式时, 8259A 不向 CPU 发 INT 信号; CPU通过查询 8259A 了解有无中断; 如果有中断发生,转入相应的服务程序。

设置查询方式的过程: 关闭中断; 用输出指令把“查询方式命令字”送到 8259A ;

对 8259A 执行一条输入指令,读取查询字 查询字格式为 : I XXXXW2WlW0

I=1 ,有中断请求, W2WlW0为最高优先级编码。

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

初始化命令字: 在系统初始化时写入; 用来设定 8259 的基本工作方式。

操作命令字: 在初始化后的任何时刻写入 8259A ;

用来动态地控制 8259A 的操作。

4.3.4 8259A 的编程

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

图 4-8

1. 初始化命令字 ICW

( 1 )初始化命令字 ICW1

0

A0 D7 D0D2 D1

SNGL×D5

LTIM

D4

1

D3

1

D6

×××

1:单片工作0:级连方式

1:电平触发0:边沿触发

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

注意!向 8259A 送入一条 A0=0 、 D4 = 1 的命令( ICW1 ) :

• 启动 8259A 的初始化过程,• 相当于 RESET 信号的作用,自动完成下列操作:

清除中断屏蔽寄存器 IMR ;

设置以 IR0 为最高优先级, IR7 为最低优先级的全嵌

套方式 ;

固定中断优先权排序。

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

图 4-9

( 2 )初始化命令字 ICW2

T7

A0

T3T4T5T6

D7 D6 D5 D4 D3 D2 D1 D0

× × ×1

中断类型码的高五位T7~T3

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

图 4-10

( 3 )初始化命令字 ICW3 (主片)

A0 D7 D6 D5 D4 D3 D2 D1 D0

1

1:该引脚连接有从片0:该引脚未连接从片

S5S7 S6 S4 S3 S2 S1 S0

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

图 4-11

A0 D7 D6 D5 D4 D3 D2 D1 D0

1

ID2~ID0:本从片连接主片引脚号

ID0ID1ID2× ××××

( 3 )初始化命令字 ICW3 (从片)

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

图 4-12

( 4 )初始化命令字 ICW4

A0 D7 D6 D5 D4 D3 D2 D1 D0

1

0x: 非缓冲方式10:缓冲方式/从片11:缓冲方式/主片

0 SFNM00 BUF AEOIM/S 1

1:自动EOI0:非自动EOI

1:特殊全嵌套0:一般全嵌套

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

( 5 ) 8259A初始化

按以下顺序对 8259A 初始化:

单片 8259A: ICW1、 ICW2、 ICW4

级联方式: ICW1、 ICW2、 ICW3、 ICW4

注意:级联方式下,每一片 8259A都要独立地按上

面顺序写入初始化命令字。

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

单片工作,边沿触发,全嵌套; 中断类型 08H~0FH ,端口地址 20H , 21H ; 非缓冲方式,非中断自动结束,非特殊全嵌套方式;

初始化程序: MOV AL, 00010011B

OUT 20H, AL ; ICW1 :单片,边沿触发MOV AL, 00001000B

OUT 21H, AL ; ICW2 :中断类型 08H~0FH

MOV AL, 00000001B

OUT 21H, AL ; ICW4 :非中断自动结束

IBM-PC 微型计算机内 8259A 的工作方式

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

例:二片 8259A 进行级联,边沿触发,非缓冲方式,非自动中断结束, CAS0~CAS2互连。

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

主片初始化程序: MOV AL, 00010001B

OUT 20H, AL ; ICW1:边沿触发,级联 MOV AL, 00001000B

OUT 21H, AL ; ICW2 : 中断类型 08H~0FH

MOV AL, 00000100B

OUT 21H, AL ; ICW3 :IR2连有从片 MOV AL, 00010001B ; ICW4 : 特殊全嵌套,非缓冲 OUT 21H, AL ; ICW4 : 非自动中断结束

主片初始化程序: MOV AL, 00010001B

OUT 20H, AL ; ICW1:边沿触发,级联 MOV AL, 00001000B

OUT 21H, AL ; ICW2 : 中断类型 08H~0FH

MOV AL, 00000100B

OUT 21H, AL ; ICW3 :IR2连有从片 MOV AL, 00010001B ; ICW4 : 特殊全嵌套,非缓冲 OUT 21H, AL ; ICW4 : 非自动中断结束

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

从片初始化程序: MOV AL, 00010001B

OUT 0A0H, AL ; ICW1:边沿触发,级联 MOV AL, 01110000B

OUT 0A1H, AL ; ICW2 : 中断类型 70H~77H

MOV AL, 00000010B

OUT 0A1H, AL ; ICW3 :INT 引脚连主片 IR2

MOV AL, 00000001B ; ICW4 :非自动中断结束 OUT 0A1H, AL ; ICW4 :非特殊全嵌套 ,非缓冲

从片初始化程序: MOV AL, 00010001B

OUT 0A0H, AL ; ICW1:边沿触发,级联 MOV AL, 01110000B

OUT 0A1H, AL ; ICW2 : 中断类型 70H~77H

MOV AL, 00000010B

OUT 0A1H, AL ; ICW3 :INT 引脚连主片 IR2

MOV AL, 00000001B ; ICW4 :非自动中断结束 OUT 0A1H, AL ; ICW4 :非特殊全嵌套 ,非缓冲

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

2 . 操作命令字 OCW

对 8259A预置完毕后 : 8259A 进入设定的工作状态 ;

准备接收由 IR 输入的中断请求信号 ;

按固定优先级(缺省方式)来管理中断请求。

运行中可以写入操作控制字,对 8259A管理中断的方式进行修改和设定。

有 OCW1 、 OCW2 和 OCW3三个操作控制字; OCW按需要选择写入,没有固定顺序。

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

图 4-14

( 1 )操作控制字 OCWl

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

例:需要屏蔽 IR4 的中断输入,同时不改变其他中断输入的屏蔽状态,可以用如下的三条指令实现:

IN AL, 21H ;取屏蔽寄存器当前值OR AL, 00010000B ;将 D4 位置 1

OUT 21H, AL ;写回改变后的屏蔽字反之,需要清除对 IR2 的中断屏蔽:

IN AL, 21H ;取屏蔽寄存器当前值AND AL, 11111011B ;将 D2 位清 0

OUT 21H, AL ;写回改变后的屏蔽字

操作控制字 OCW1 应用

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

图 4-15

( 2 )操作控制字 OCW2

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

一般的中断结束命令:MOV AL, 20H

OUT 20H, AL

操作控制字 OCW2 应用

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

图 4-16

( 3 )操作控制字 OCW3

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

OCW3用途:• 设置 / 清除特殊屏蔽命令• 发出读寄存器命令:

设置 RR=1 , RIS=0 后,用 IN 指令读偶端口,可以将 IRR 读入 CPU 。

设置 RR=1 , RIS=1 后,用 IN 指令读偶端口,可以将 ISR 读入 CPU 。

操作控制字 OCW3 应用

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

•发出查询命令; 设置 P=1 后,用 IN 指令读偶端口,可以将中断查询字 读入 CPU : I X X X X W2 Wl W0

I=1 表示有中断请求, W2 Wl W0 表示请求服务的最高 优先级编码。

注意: 设置了 P=1 的查询命令后, 8259A 不再通过 INT 引脚向 CPU 发送中断请求。 要取消查询方式,可以再次发出 OCW3 ,并使P=0 。

操作控制字 OCW3 应用

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

例: BIOS 中读取 ISR寄存器的程序段:

MOV AL , 00001011B ; OCW3命令字 ( 读ISR)

OUT 20H , AL ; 写入 OCW3 端口NOP ;延时IN AL , 20H ;将 ISR 内容送入 AL

MOV AH , AL ;将 ISR 内容转存入 AH

OR AL , AH ;是全 0 否 ?

JNZ AW-INT ;否,转硬件中断程序……

操作控制字 OCW3 应用

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

4.4 中断方式输入输出

4.4.1 中断方式 IO 接口

中断方式输入过程: 外部设备输入数据; 中断请求触发器置位; 接口向 CPU 申请中断; CPU 响应中断,中断请求触发器被复位; CPU 在中断服务程序中读取数据。

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

图 4-17

中断方式输入接口

输入设备

输入锁存器

中断请求

输入缓冲器

地址译码

≥1

D0~D7

RD选通

+5V

INTA

A0~A15

M/IO

Q

U2

R

中断屏蔽 &

Q INTR

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

中断屏蔽触发器的作用: 控制外设接口的中断请求信号能否发送给CPU 。

中断屏蔽触发器可以看作该接口控制寄存器的一位

图 4-17 是不完整的: 没有给出中断屏蔽触发器的写入电路; 解决中断优先权的电路; 向 CPU 发送中断类型号的电路。

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

图 4-18

输入设备

输入锁存器

中断请求

输入缓冲器

地址译码

≥1

D0~D7

RD选通

+5V

INTR(送往8259A)

A0~A15

M/IO

Q

U2

R

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

中断方式下,完整的输入输出程序应由二个程序模块配合完成:主程序:

完成输入输出所需要的“初始化”工作和结束工作;

中断服务程序:完成数据传输和输入输出控制工作。

4.4.2 中断方式输入输出程序设计

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

1. 主程序设计( 1 ) CPU初始化:设置堆栈,设置中断向量,开放中断。( 2 )中断控制器 8259A 的初始化:

选择工作方式,设置优先级、清除屏蔽位等。( 3 )接口的初始化:设置接口工作方式,设置中断开放位等。( 4 )中断服务程序的初始化: 设置中断服务程序使用的缓冲区指针 , 计数器,状态位等。注意:

中断服务程序的指针、计数器、状态位等只能存放在 内存单元。 对于输出过程,应在主程序中启动第一次输出。 输入输出完成之后,主程序要根据需要做好结束工作。

如:处理输入的数据,关闭中断等。

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

2. 中断服务程序设计• 保护现场:

把所有中断服务程序里使用、会改变值的寄存器压入 堆栈。• 开放中断:

允许 CPU 响应优先级更高、更紧急的中断。• 输入输出处理:• 关闭中断:

关闭中断可以避免不必要的中断嵌套,发 EOI命令。• 恢复现场:

按照“先进后出”的原则,恢复各寄存器的内容。• 中断返回:

用 IRET 指令返回被中断的程序。

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

中断服务程序应注意的几个问题: 中断服务程序要短小精悍,运行时间短,执行一次中断服务程序的时间要大大少于二次中断的时间间隔。对于耗费时间多的数据处理工作,应交由主程序完成。 一般的情况下,应避免在中断服务程序内进行DOS 功能调用。那样做,可能产生这些程序的“重入”。 DOS 功能调用程序不具备重入功能,会产生难以预料的结果。需要进行控制台 IO 操作可以使用BIOS 调用。 在输入输出处理完成后,一定要向 8259A 发送中断结束命令( EOI )。如果是级联的 8259A 的从片上的中断,则需要向主片和从片分别发送中断结束命令。否则,该设备的下一次中断就不能被响应,比它级别低的中断从此也不能被响应。

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

一个完整的中断方式输入程序设:• 数据端口地址为 240H

• 使用 8259A 的 IR3 引脚申请中断,中断类型 0BH

• 8259A 端口地址为 20H , 21H

• 输入以“回车”字符表示结束。

4.4.3 中断方式应用

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

DATA SEGMENT

IN_BUFFER DB 100 DUP (?)

;接收缓冲区 ,假设一次输入不超过 100字节IN_POINTER DW ? ;接收缓冲区指针DONE DB 0

;完成标志, =1 表示输入已完成DATA ENDS

数据段定义

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

CODE SEGMENT

ASSUME CS: CODE, DS: DATA

BEGIN: MOV AX, SEG IN_INTR

; IN_INTR 是中断服务程序入口MOV DS, AX

LEA DX, IN_INTR

MOV AX, 250BH

; AH 中为功能号, AL 中为中断类型

INT 21H ;装载 0BH 中断向量MOV AX, DATA

MOV DS, AX ;装载数据段段基址

主程序( 1 )

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

MOV IN_POINTER, OFFSET IN_BUFFER

;设置指针初值MOV DONE, 0 ;设置完成标志为“未完

成”IN AL, 21H

AND AL, 11110111B

OUT 21H, AL ;清除 IR3 的屏蔽位STI ;开放中断

W: CMP DONE, 0

JZ W ;等待完成..... ;结束处理MOV AX, 4C00H

INT 21H

主程序( 2 )

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

IN_INTR PROC FAR

PUSH DS ;保护现场PUSH AX

PUSH BX

PUSH DX

STI ;开放中断,允许响应更高级中断MOV AX, DATA

MOV DS, AX ; 在中断服务程序中重新装载 DS寄存器

MOV BX, IN_POINTER ;装载缓冲区指针MOV DX, 240H

输入中断服务程序( 1 )

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

IN AL, DX

;从输入设备读取一个数据,同时清除中断请求MOV [BX], AL ;数据存入缓冲区INC BX

MOV IN_POINTER, BX ;修改指针 , 存入内存单元CMP AL, 0DH ;判输入是否结束JNE EXIT

IN AL, 21H

OR AL, 00001000B ;输入结束,置 IR3 屏蔽位

OUT 21H, AL

MOV DONE, 1 ;置完成标志

输入中断服务程序( 2 )

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

EXIT: CLI ;关闭中断,准备中断返回MOV AL, 20H

OUT 20H, AL ;向 8259 发中断结束命令POP DX ;恢复现场POP BX

POP AX

POP DS

IRET ;中断返回IN_INTR ENDP

CODE ENDS

END BEGIN

输入中断服务程序( 3 )

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

习题 4

1. 什么叫中断?有哪几种不同类型的中断?2. 什么是中断类型?它有什么用处?3. 有哪几种确定中断优先级的方法?说明每一种方法

各自的优劣之处。4. 什么是中断嵌套?使用中断嵌套有什么好处?对于

可屏蔽中断,实现中断嵌套的条件是什么?5. 什么叫中断屏蔽?如何设置 I/O 接口的中断屏蔽?6. 什么是中断向量?中断类型为 1FH 的中断向量为 23

45H:1234H ,画图说明它在中断向量表中的安置位置。

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

7. 叙述一次可屏蔽中断的全过程。8. 简要叙述 8259A 内部 IRR, IMR, ISR三个寄存器各自

的作用。9. 8259A 是怎样进行中断优先权管理的?10. 特殊全嵌套方式有什么特点?它的使用场合是什么?11. 向 8259A 发送“中断结束”命令有什么作用?

8259A 有哪几种中断结束方式?分析各自的利弊。12. 某系统中有两片 8259A ,从片的请求信号连主片的

IR2 引脚,设备 A 中断请求信号连从片 IR5 引脚。说明设备 A 在一次 I/O 操作完成后通过两片 8259A 向 8086 申请中断, 8086CPU通过两片 8259A 响应中断,进入设备 A 中断服务程序,发送中断结束命令,返回断点的全过程。

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

13. 某 8086 系统用 3片 8259A 级联构成中断系统,主片中断类型号从 10H 开始。从片的中断申请连主片的IR4 和 IR6 引脚, 它们的 中 断 类 型 号 分 别从20H 、 30H 开始。主、从片采用电平触发,嵌套方式,普通中断结束方式。请编写它们的初始化程序。

14. 给下面的 8259A初始化程序加上注释,说明各命令字的含义。MOV AL, 13H

OUT 50H, AL

MOV AL, 08H

OUT 51H, AL

MOV AL, 0BH

OUT 51H, AL

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

15. 设 8259A 端口地址为 20H 和 21H ,怎样发送清除ISR3 的命令?

16. 图 4-17 能否直接用于 8086 系统?为什么?