文档介绍:第八章中断技术
一、中断的基本概念
二、中断控制器 Intel 8259A
四、 IBM PC/XT 的基本中断系统
五、PC/AT(80286)中8259的使用情况
三、中断服务程序的编程
六、Pentium的中断系统简介
—— CPU在正常运行程序时,由于程序的预先安排或计算机内外部事件,引起CPU中断正在运行的程序,而转到为预先安排的事件或内外部事件服务的程序中去。
一、中断的基本概念
中断源
中断
请求
当前程序
中断
服务
程序
程序断点
中断返回
中断响应
mov ah, 1
int 21h
add al, 1
mov ah, 2
mov dl, al
int 21h
预先安排的事件:
计算机内外部事件:
如: 除法溢出;
电源故障;
内存错误;
键盘输入;
与不同外设的信息交换; 等。
2. 中断的类型
PC系列微机最多可以支持256种中断,它们被分为四种类型:
•异常中断
•软件中断
•外部可屏蔽中断
•外部非屏蔽中断
每个中断都指定了一个类型码,也称为中断号。
对应每一种中断应当有一个中断服务程序(ISP)
(Interrupt Service Program ——ISP)
中断类型码通过一个地址指针表与中断服务程序的入口地址相联系:
在实模式下: 该表称为中断向量表;
在保护模式下:该表称为中断描述符表。
00000H
00004H
003FCH
0型中断向量
1型中断向量
255型中断向量
n型中断向量
…
…
4*n
(1) 异常中断
是指令执行过程中引起的内部异常操作处理。包括除法错误异常、调试异常、断点中断等。
异常中断的例子:
0型——除法错误异常
1型——调试异常
…...
(2) 软件中断
执行有定义的 INT n 指令而引发的中断,称为软件中断。
软件中断使用05H、10H~0FFH中的若干个中断号;
软件中断进一步分为BIOS中断和DOS中断。
异常中断和软件中断是由处理器内部产生的。
(3) 外部可屏蔽中断
•外部可屏蔽中断是处理器响应各种外部硬件中断的最常用的方法,
通过处理器的INTR引脚产生;
•外部可屏蔽中断受处理器内部的中断允许标志位IF的控制;
•处理器只有一个INTR引脚可以接受外部可屏蔽中断请求,为了管理
众多的外部中断源,微机系统中采用可编程中断控制器8259;
• PC系列机通过两片8259级连可以响应15个外部中断源。
(4) 外部非屏蔽中断
•为外部紧急请求提供服务的中断,通过处理器的NMI引脚产生;
• NMI与IF标志的状态无关;
• NMI有一个专用的类型号02H;
•使用非屏蔽中断的典型例子是电源故障中断。
3. 中断的优先级(权)与中断嵌套
优先级(权)
通常一个系统有多个中断源,而CPU同一时刻只能响应一个中断源的请求,那么当多个中断源同时请求中断服务时,应该先响应哪一个,有一个次序安排的问题。按中断源的轻重缓急程度确定的优先级别,称为优先级(权)。
1
异常中断
软件中断
外部非屏蔽中断
外部可屏蔽中断
优先级递增
中断嵌套
1#中断请求
响应
返回
1#中断
服务程序
2#中断请求
响应
返回
2#中断
服务程序
3#中断请求
响应
返回
3#中断
服务程序
原主程序
中断优先级3#>2#>1#
•中断嵌套可以有多级,具体级数原则上不限,只取决于堆栈深度。
当CPU正在响应某一中断源的请求,执行为其服务的中断服务程序时,如果有优先级更高的中断源发出请求,CPU将中止正在执行的中断服务程序而转入为新的中断源服务,等新的中断服务程序执行完后,再返回到被中止的中断服务程序,这一过程称为中断嵌套。
1
当中断请求被响应时,CPU将停止当前运行的程序,转入中断服务程序,而每个中断服务程序都有一个程序的入口地址,这个入口地址就是中断向量。
00000
0000C
00
01
3C
1F
1F3C:0100
(1F4C0)
PUSH AX
PUSH BX
003FF
中
断
向
量
表
INT 3中
断
服
务
程
序
中断向量
4. 中断向量与中断向量表
内存中存放一组中断向量的区域被称为中断向量表。当中断被响应后,CPU根据中断的类型号,计算出中断向量在中断向量表中的位置,然后从表中取出中断向量(中断服务程序的入口地址),并进入中断服务程序。
mov ah, 1
int 21h
add al, 1
int 3
中断向量表
•(实模式下)中断向量表存放在内存最低端的1K单元之中,物理地址00000H~003FFH.
00000H
00