文档介绍:第十一章中断
第一节实模式下的中断
一、中断的基本概念
* 什么是中断?
在计算机系统中,一个CPU要处理若干事务:数据采集,运算,显示,处理突发事件,通信,打印…….。这就要求采用中断技术,才能作到面面俱到而又不误突发事件的处理时机。
从程序执行的角度看:CPU正在执行的当前程序被外设打断,转而执行为外设服务的所谓“中断服务程序”。
外设n的中断服务程序
当前
程序
CPU
INTR
中断请求触发器
外设n
当前程序
:
CALL SUBR
:
:
子程序
*由CALL指令引起转入子程序
*预知何时转入子程序
*入口地址直接从CALL中取得
SUBR
外中断
由外设向CPU发出中断请求。
非屏蔽中断 NMI (Non-Maskable Interrupt)
不受CPU内部中断允许标志IF的屏蔽
可屏蔽中断 INTR (maskable INTRrupt)
受CPU内部中断允许标志IF的屏蔽
在汇编语言中:
STI指令,使IF=1,CPU可以接受来自INTR引脚上的中断请求。术语:开中断/ 中断允许
CLI指令,使IF=0,CPU不接受来自INTR引脚上的中断请求。术语:关中断/ 中断禁止。
在C语言中:
库函数enable( )用来设置IF=1;disable( )用来设置IF=0。
CPU
NMI
INTR
中断源的识别
中断技术的核心问题
——寻找中断服务程序的入口地址
*识别中断源和寻找入口地址的复杂性
识别中断源及寻找入口地址概要示意
在INTR引脚上可以连接多个中断源。
08号中断
服务程序
CPU
INTR
ADDR08
中断
控制器
中断向量表
09号中断服务程序
ADDR00
ADDR01
ADDR02
:
ADDR08
:
ADDRFF
08号中断源
ADDR09
0A号中断服务程序
09号中断源
ADDR0A
0A号中断源
: :
中断向量表是中断源与中断服务程序之间的“纽带”。
FF号中断服务程序
: ADDRFF
FF号中断源
1. 请求中断
中断源
INTR
CPU
2. 接受中断请求,但不知道入口地址,请送识别码(中断向量号)
3. 识别码是N,请按规则,在中断向量表中获取中断服务程序的入口地址
什么是“中断向量表”,如何根据识别码从中查找入口地址?
中断向量表
几个术语
中断类型号:即中断源识别码或中断向量号。80X86给每一个中断源分配了一个序号,从00—FFH,共256个。
在80X86中是通过中断类型号来识别中断源的。
中断向量:普遍说法:中断服务程序的入口地址
③中断向量表:
*80X86在内存0段0000H—03FFH这1K字节中建立了一个中断向量表,用以存放256个中断服务程序的入口地址。
*各中断源的中断服务程序入口地址在内存中断向量表中有固定的存放位置——以中断类型号X4开始的连续四个字节单元中,前两个字节存放中断服务程序的入口地址偏移量,后两个字节存段基址。
④中断向量地址:存放中断向量(入口地址)的存储单元的地址,即识别码N x 4、N x 4 + 1、N x 4