本资料来源
取一条指令
执行指令
指令执行完
?
有中断请求
?
取中断类型号
FR入栈
IF=0
CS:IP入栈
进入中断处理
N
N Y
Y
中断系统
中断源:有硬件故障、外部设备、CPU
内部三种中断源。
内部中断
外部中断
软件中断
陷阱中断
可屏蔽中断
不可屏蔽中断
中断的分类
中断响应过程
中断处理过程
保存现场
开中断
执行中断服务
关中断
恢复现场
开中断
返回断点
中断优先级判断
硬件排队电路法
优点是速度快,但连线较多。
串行排队链电路有时也称菊花链硬件查询线路
,
电路较简单,但优先级不灵活,一旦硬件连接固定以后,
优先次序也就固定了,想再改变或调整优先级很困难。
两维结构优先排队
软件查询法
软件查询法是建立在简单接口电路基础之上
中断嵌套
8086/8088的中断系统
CPU的内中断
CPU的外中断
分类
软件中断
陷阱中断
不可屏蔽中断NMI(Non—maskable interrupt) N=2
可屏蔽中断INTR(Interrupt requestion) N>=5
断点中断N=3
溢出中断N=4
指令中断N>=5
除法错中断N=0
单步中断N=1
8088/8086CPU将存储器00000H~003FFH区域用于存放中断向量(即
中断服务程序入口地址) ,此区域共有1024个字节单元,最多可容纳
256个中断向量。
中断向量指针与中断类型号
中断向量指针 = 中断类型号*4
中断向量 = (中断向量指针)
中断向量的装入: 在程序初始化部分进行。
例如,假设中断类型号为60H,中断服务程序的段基址是SEG_INTR,偏移
地址是OFFSET_INTR(006DH),则填写中断向量表的程序段为:
CLI ;令IF=0
MOV AX, 0 ;
MOV DS, AX ;
MOV DI, 4*60H ;中断向量指针→DI
MOV AX, OFFSET_INTR ;中断服务程序入口的偏移值→AX
MOV (DI),AX ;AX→[DI][DI+1]中
MOV AX, SEG-INTR ;中断服务程序入口的段基址→AX
MOV (DI+2),AX ;AX→[DI+2][DI+3]
STI ;令IF=1
MOV AX,00H
MOV DS,AX
MOV BX,60H*4 ;中断类型号×4→BX
MOV AX,006DH ;中断服务程序偏移地址
MOV [BX],AX ;装入偏移地址
PUSH CS
POP AX ;中断服务程序段基址
MOV [BX+2],AX ;装入段基址
采用DOS功能调用“INT 21H”中的AH=25H来装入中断向量:
MOV AX, N ;中断类型号
MOV AH,25H ;设置中断向量
MOV DX,SEG_INTR
MOV DS,DX ;DS指向中断程序段址
MOV DX,OFFSET_INTR ;DX指向中断程序偏移量
INT 21H
可编程中断控制器8259A
功能:管理输入到CPU的中断请求,实现优先级判决,提供中断类型号,
屏蔽中断输入等功能,能直接管理8级中断,通过级联,可管理64级中断。
内部结构及引脚特性:
A0
0 X X X 1 LTIM X SNGL IC4 ICW1
1 T7 T6 T5 T4 T3 X X X ICW2
1 S7 S6 S5 S4 S3 S2 S1 S0 主ICW3
1 X X X X X ID2 ID1 ID0 从ICW3
1 0 0 0 SFNM BUF M/S AEOI 1 ICW4
1 M7 M6 M5 M4 M3 M2 M1 M0 OCW1
0 X ESMM SMM 0 1 P RR RIS OCW3
0 X X X X 查询字
0 R SL EOI 0 0 L2 L1 L0 OCW2
初
始
化
控
制
字
操
作
控
制
字
ICW1
ICW2
SGNL=1
主片?
主ICW3 从ICW3
IC4=1
ICW4
结束
Y
N
N
Y
Y
N
例:4个通道:IR0、IR1、IR2、IR3,全嵌套方式,边沿触发,EOI方式,中
断类型分别为:90H、901、92H、93H,中断向量分别为:0060H、0090H、
00A0HH、00B0H,存于CS:340H开始的区域,地址:FFDCH,FFDEH。
ICW1:00010011B=13H
ICW2:90H
ICW4:00000001B=01H
OCW1:11110000B=F0H
CLC
MOV DX,0FFDCH
MOV AL,13H
OUT DX,AL
INC DX
MOV AL,90H
OUT DX,AL
MOV AL,01H
OUT DX,AL
MOV AL,0F0H
OUT DX,AL
SUB AX,AX
MOV ES,AX
MOV CX,0004H
PUSH CS
POP DS
MOV SI,0340H
MOV DI,240H
CLD
LOOP1:MOVSW
MOV ES:[DI],
DS
INC DI
INC DI
LOOP LOOP1
STI
例:有一片主片和两片从片8259A,主片为:特定全嵌套方式、边沿触发、
EOI方式、中断类型为:40H;从片为:全嵌套方式、边沿触发、EOI方式、
中断类型为:60H、80H; ,地址:FFDCH,FFDEH。
主片:
ICW1:00010001B=11H
ICW2:40H
ICW3:01001000B=48H
ICW4:00010001B=11H
从片A:
ICW1:00010001B=11H
ICW2:80H
ICW3:00000110B=06H
ICW4:00000001B=11H
从片B:
ICW1:00010001B=11H
ICW2:60H
ICW3:00000011B=03H
ICW4:00000001B=11H
+5V
IN AL, 21HIN AL, 21H
OUT 43H, ALOUT 43H, AL
端口(PORT)
端口泛指I/O地址,通常对应寄存器
一个接口电路可以具有多个I/O端口,每个端
口用来保存和交换不同的信息
数据寄存器、状态寄存器和控制寄存器占有的
I/O地址常依次被称为数据端口、状态端口和控
制端口,用于保存数据、状态和控制信息
输入、输出端口可以是同一个I/O地址
一定要理解