第七章 中断系统_续
3.若CPU处于开中断状态,则在当前指令执行结束 后,启动中断响应总线操作,发出两个负脉冲作为响 应信号。
4.8259A接收到第一个负脉冲,完成如下工作:
(1)使ISR相应位置1,表示CPU已为该中断请求服务。 (2)使IRR的相应位清0。
5.8259A接收到第二个负脉冲,将中断类型号送上数据总 线。中断类型号由用户编程和中断请求引脚IRi的序号i共同决 定(CPU读取中断类型号,经响应过程后,进入中断服务程 序,直到服务结束返回)。
(2)设计
• ① 8259A初始化编程
• ;主片8259A的初始化
•
MOV AL,11H ;写入ICW1,设定边沿触发,级联方式
•
OUT 20H,AL
•
JMP INTR1 ;延时,等待8259A操作结束,下同
• INTR1:MOV AL,08H
•
;写入ICW2,设定IRQ0的中断类型号为08H
•
OUT 21H,AL
07H 08H 09H 0AH
功能 等待从键盘输入一个字符 并显示它 显示1个字符
从COM1接收1个字符 从COM1发送1个字符
向打印机输出1个字符
立即从键盘输入1个字符 或向显示器输出1个字符
等待从键盘输入一个字符 等待从键盘输入一个字符 显示一个字符串
从键盘接收1个字符串 存入缓冲区,并显示它
入口参数 无
各级中断的用途如表7-1所示。
表7-1 IBM PC/AT的中断源和类型号
中断向量地址指针 8259A引脚 中断类型号
优先级
中断源
00020H 00024H 00028H 001C0H 001C4H 001C8H 001CCH 001D0H 001D4H 001D8H 001DCH 0002CH 00030H 00034H 00038H 0003CH
主片IR0 主片IR1 主片IR2 从片IR0 从片IR1 从片IR2 从片IR3 从片IR4 从片IR5 从片IR6 从片IR7 主片IR3 主片IR4 主片IR5 主片IR6 主片IR7
08H 09H 0AH 70H 71H 72H 73H 74H 75H 76H 77H 0BH 0CH 0DH 0EH 0FH
• 例7-4使用INT 21H 的2BH系统功能设置日期为 2004年5月1日。其程序段为:
MOV DL,1 ;入口参数送入指定寄存器:把日子放入DL中
MOV DH,5 ;把月份放入DH中
MOV CX,2004
;把年份放入CX中,CX中的年份值是以1980为基准的偏移值
SUB CX,1980 ;减去1980才为年份设定值
(2)特殊全嵌套方式。
与全嵌套方式基本相同,所不同的是在特殊全嵌 套方式下,当执行某一级中断服务程序时,可响应同级 的中断请求,从而实现对同级中断请求的特殊嵌套 (8259A级联使用时,某从片的8个中断源对主片来说, 可以认为是同级的)。
特殊全嵌套方式用于多片级联。
3.优先级控制方式
(1)优先级自动循环方式。
6.若8259A工作在自动结束中断方式AEOI,则8259A清除 ISR的相应位,否则直至中断服务结束,发出EOI命令,才能 使ISR中的相应位清0。
7.3.3 8259A的工作方式 8259A有多种工作方式,这些工作方式可以通过初始化 命令字(ICW1~ICW4)和操作命令字(OCW1~ OCW4)来设置。
动
器
地址 译码
SP/EN D7~D0
CAS0 CAS1 CAS2
A0 CS
从片 8259A
IIRR01
外设的 中断申请
INT
IR7
来自其他从片
图7-12 参与8259A组成的级联中断系统图
7.3.5 8259A的编程命令 1.初始化命令字ICW
写ICW1
写ICW2
N
级联?
Y 写ICW3
N
要ICW4?
0(最高) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15(最低)
定时器 键盘 从片8259A 时钟/日历钟 IRQ9(保留) IRQ10(保留) IRQ11(保留) IRQ12(保留) 协处理器 硬盘控制器 IRQ15(保留) 异步通信口(COM2) 异步通信口(COM1) 并行打印机2 软盘驱动器 并行打印口1
MOV AH,2BH ;设置日期功能号送入AH寄存器
INT 21H
;执行DOS调用
CMP AL,0FFH
;根据出口参数AL=00H,设置成功;AL=FFH,判断失败
JE ERROR ;不成功,转错误处理
┇
;成功,往下执行
7.4.2 DOS系统功能调用 1.字符设备I/O控制
• 字符设备包括键盘、显示器、打印机、串行通信接口 等。通过DOS系统功能调用可以实现单个字符或字符 串的输入与输出控制
19 IR1 18 IR0 17 INT
16 SP/EN 15 CAS2
图5-10 8259A引脚信号
7.3.2 8259A的工作过程
1.中断源通过IR0~IR7向8259A发中断请求,使得 8259A的中断请求寄存器IRR的相应位置1。
2.IRR中经中断屏蔽寄存器IMR允许后的置位位进入 优先权判别器PR,PR将其中最高优先权的中断请求从 INT输出,送至CPU的INTR端。
•
JMP INTR2
• INTR2:MOV AL,04H ;写入ICW3,设定主片IRQ2级联方式
•
OUT 21H,AL
•
JMP INTR3
• ;从片8259A的初始化
•
MOV AL,11H
•
;写入ICW1,设定边沿触发,级联方式
•
OUT 0A0H,AL
•
JMP INTR5
• INTR5:MOV AL,70H
• OUT 20H,AL ;写主片EOI命令
7.4 中断调用
7.4.1 DOS 和BIOS 中断的调用方法
1. 将入口参数送入指定的调用寄存器,如果没有入 口参数,就不需要这一步。 2.将功能号送入AH寄存器,将子功能号送入AL寄 存器,如果没有子功能号,不需要送AL。 3.产生一个软中断INT n ,转入子程序入口。 4.通过CPU的返回寄存器返回中断处理结果——出 口参数。如果没有返回值,也就不需要返回寄存器。
•
;写入ICW2,设定从片IR0,即IRQ8的中断类型号为70H
•
OUT 0A1H,AL
•
JMP INTR6
• INTR6:MOV AL,02H
•
;写入ICW3,设定从片级联到主片的IRQ2
•
OUT 0A1H,AL
•
JMP INTR7
• INTR7:MOV AL,01H
• ② 级联工作编程
• ;读ISR的内容
无
Ctrl-c处理 能 能 能 能 能 能
否 能 能 能
表7-2 字符设备的系统功能
• 例7-6 从键盘输入一串字符,并在显示屏上显示出来。注意09H功能显示字符串时是以‘$’符 号结束的,因此,要显示的字符串一律以‘$’结尾
8086/8088 CPU
MCE/PDEN
8288
总线
接 数接 据 总线
驱动器 IORC
INTA IOWC
总 驱动器
线 的OE端
D7~D0 地址 总线
INTR
地址 译码
INTA WR RD
SP/EN
CAS0 CAS1
主片 CAS2
8259A
A0 地址
IR0
IR1
IR7
数据总线 地址总线
驱
连接其他芯片
IR0
寄存器
IRR
IR7
中断屏蔽寄存器IMR
图5-9 8259A内部结构框图
2.8259A的引脚特性
CS 1 2
WR 3
RD 4
D7
5
D6 D5
6
D4
7
D3
8
D2
9
D1 10
D0 11
CAS0 12
CAS1 13
GND 14
28 VCC 27 A0
26 INTA 25 IR7 24 IR6 23 IR5 22 IR4 21 IR3 20 IR2
BUF BU M/S
D2
D1
AEOI PM
(2).操作命令字OCW
(1)操作命令字OCW1——屏蔽操作命令字
A0
D7
D6
D5
D4
D3
D2
D1
D0
1
(2)操作命令字OCW2——中断方式命令字
A0
D7
D6
D5
D4
D3
D2
D1
D0
1
R
SL EOI
0
0
L2
L1
L0
(3)操作命令字OCW3——状态操作命令字
A0
• MOV AL,0BH ;写入OCW3,读ISR命令
• OUT 0A0H,AL
• NOP
;延时,等待8259A操作结束
• IN AL,0A0H ;读出ISR
•
┇
• ;向从片发EOI命令
• MOV AL,20H
• OUT 0A0H,AL ;写从片EOI命令
•
┇
• ;向主片发EOI命令
• MOV AL,20H
T4
T3
(3)初始化命令字ICW3——主/从片初始化字
主片ICW3的格式如下:
A0
D7
D6
D5
D4
D3
D2
D1
D0
1
从片ICW3的格式如下:
A0
D7
D6
D5