第7章微计算机的中断系统
中断控制方式的优点
分时操作
实时处理
故障处理
8086/8088的中断源
NMI
8259A
INTR
中断逻辑
INTn
指令
INTO
指令
除法
出错
TF=1
内部中断
类型n,包括类型3断点中断
类型4中断
类型0中断
类型1中断
类型2中断
外部中断
中断的优先权
8086/8088系统的中断源优先级别由高到低的顺序为:除法错→INT n →INTO →NMI →INTR →单步。
优先级低的中断能被优先级高的中断而中断,形成中断嵌套。
主程序
A 中断
过程A
B 中断
过程 B
C 中断
过程 C
8086/8088中断处理流程
结束当前指令
除法出错、INT n、INTO?
非屏蔽中断?
可屏蔽中断?
TF=1?
执行下条指令
IF=1?
取中断类型码
中断响应
标志入栈
清IF和TF
CS、IP入栈
取中断向量送入CS和IP
非屏蔽中断且优先级高于
当前中断?
执行中断服务程序
IP、CS出栈
标志出栈
返回断点
Y
N
Y
Y
Y
Y
Y
N
N
N
N
N
可屏蔽中断的响应、执行与返回
接口向8086/8088的INTR引脚发送中断请求信号。
若IF=1,则8086/8088执行完当前指令,通过INTA引脚发送两个负脉冲应答信号。
通过数据总线读取中断类型号。
将标志寄存器、CS和IP入栈。
清除IF和TF。
根据中断类型号×4取中断向量,送入CS和IP。
执行中断服务程序。
执行IRET指令从中断服务程序返回原程序。
中断向量表的设置方法
借助DOS的装入程序
VDATA SEGMENT AT 0000H
ORG n*4
VINTSUB DW noffset, nseg
VDATA ENDS
在程序的初始化部分使用MOV指令。
VDATA SEGMENT AT 00H
ORG n*4
VINTSUB DW 2 DUP(?)
VDATA ENDS
ININT SEGMENT
ASSUME CS:ININT, DS: VDATA
MOV AX, VDATA
MOV DS, AX
MOV VINTSUB, noffset
MOV VINTSUB+2, nseg
⋮
ININT ENDS
借助DOS的功能调用INT 21H。
N
结束
开始
获取旧的中断向量
使中断服务程序驻留在内存中
设置新的中断向量
第7章 微计算机的中断系统 来自淘豆网www.taodocs.com转载请标明出处.