请输入您要查询的百科知识:

 

词条 中断向量
释义

概念

中断标识码(中断类型号):

由硬件(通常是中断控制器)产生,以标识不同的中断源。

中断向量:

中断服务程序的入口地址。在某些计算机中,中断向量的位置存放一条跳转到中断服务程序入口地址的跳转指令。

中断向量地址:

存储中断向量的存储单元地址。

(1)存放中断服务程序的入口地址

在PC/AT机中,中断向量是指中断服务程序的入口地址,每个中断向量分配4个连续的字节单元,两个高字节单元存放入口的段地址CS,两个低字节单元存放入口的段内偏移量IP。在PC/AT中,规定内存储器的最低1 KB用来存放中断向量(共256个),称这一片内存区为中断向量表,地址范围是0~3FFH,如图所示。

在PC/AT中由硬件产生的中断标识码被称为中断类型号(当然,中断类型号还有其他的产生方法,如指令中直接给出、CPU自动形成等),即在中断响应期间8259A产生的是当前请求中断的最高优先级的中断源的中断类型号。中断类型号和中断向量之间有下面的关系:

中断类型号×4=存放中断子程序首地址的存储区首地址=中断向量地址

有了存放中断向量的首地址,从该地址开始的4个存储单元中取出的就是中断服务程序的入口。

(2)跳转到中断服务程序的入口地址

在AVR或ARM微处理器中,中断向量的大小也是4个字节,但其中存放的不是中断程服务程序的入口地址,而是可执行的代码。当响应中断时,硬件自动执行相应中断向量处的跳转代码,然后跳转到具体的中断服务程序的入口地址。

(3)中断向量表

CPU是根据中断号获取中断向量值,即对应中断服务程序的入口地址值。因此为了让CPU由中断号查找到对应的中断向量,就需要在内存中建立一张查询表,即中断向量表(在32位保护模式下该表称为中断描述符表)。80x86微机支持256个中断,对应每个中断需要安排一个中断服务程序。在 80x86实模式运行方式下,每个中断向量由4字节组成。这4字节指明了一个中断服务程序的段值和段内偏移值。因此整个向量表的长度为1KB。当 80x86微机启动时,ROM BIOS中的程序会在物理内存开始地址0x0000:0x0000处初始化并设置中断向量表,而各中断的默认中断服务程序则在BIOS中给出。由于中断向量表中的向量是按中断号顺序排列,因此给定一个中断号N,那么它对应的中断向量在内存中的位置就是0x0000:N×4,即对应的中断服务程序入口地址保存在物理内存0x0000:N×4位置处。

在BIOS执行初始化操作时,它设置了两个8259A芯片支持的16个硬件中断向量和BIOS提供的中断号为0x10~0x1f的中断调用功能向量等。对于实际没有使用的向量则填入临时的哑中断服务程序的地址。以后在系统引导加载操作系统时会根据实际需要修改某些中断向量的值。例如,对于DOS操作系统,它会重新设置中断0x20~0x2f的中断向量值。而对于Linux系统,除了在刚开始加载内核时需要用到BIOS提供的显示和磁盘读操作中断功能,在内核正常运行之前则会在setup.s程序中重新初始化8259A芯片并且在head.s程序中重新设置一张中断向量表(中断描述符表)。完全抛弃了BIOS所提供的中断服务功能。

当Intel CPU运行在32位保护模式下时,需要使用中断描述符表(Interrupt Descriptor Table,IDT)来管理中断或异常。IDT是Intel 8086~80186 CPU中使用的中断向量表的直接替代物。其作用也类似于中断向量表,只是其中每个中断描述符项中除了含有中断服务程序地址以外,还包含有关特权级和描述符类别等信息。Linux操作系统工作于80x86的保护模式下,因此它使用中断描述符表来设置和保存各中断的"向量"信息。下面是80X86中断向量表各个地址表示的中断用途。

内存地址(十六进制) 对应向量号(十六进制) 中断用途

BASIC中断向量

0x3C4 - 0x3FF F1-FF 未使用

0x218 - 0x3C3 86-F0 BASIC程序运行时提供给BASIC解释程序作用

0x200 - 0x217 80-85 为BASIC保留

0x1E0 - 0x1FF 78-7F 未使用

0x1DC - 0x1DF 77 硬件中断15

0x1D8 - 0x1DB 76 硬件中断14

0x1D4 - 0x1D7 75 硬件中断13

0x1D0 - 0x1D3 74 硬件中断12

0x1CC - 0x1CF 73 硬件中断11

0x1C8 - 0x1CB 72 硬件中断10

0x1C4 - 0x1C7 71 硬件中断9

0x1C0 - 0x1C3 70 硬件中断

0x1A0 - 0x1BF 68-6F 未使用

0x180 - 0x19F 60-67 为用户程序保留的单元

0x128 - 0x17F 4A-5F 保留

0x124 - 0x127 49 指向键盘增强服务变换表

0x120 - 0x123 48 PC机使用,用于把PC机的键盘代码变换为标准的键盘代码

0x11C - 0x11F 47 保留

DOS中断向量

0x118 - 0x11B 46 第二硬盘参数块

0x114 - 0x117 45 保留

0x110 - 0x113 44 PC机使用,用于指向低分辩率图形字符参数表

0x108 - 0x10F 42-43 未使用

0x104 - 0x107 41 硬盘参数块

0x0C0 - 0x0CB 34-40 未使用

0x0CC - 0x0CF 33 鼠标中断

0x0C0 - 0x0CB 30-32 未使用

0x0BC - 0x0BF 2F 多路服务中断

0x0B8 - 0x0BB 2E 基本SHELL程序装入

0x0AC - 0x0B7 2B-2D 未使用

0x0A8 - 0x0AB 2A Microsoft 网络接口

0x0A4 - 0x0A7 29 快速写字符

0x0A0 - 0x0A3 28 DOS安全使用

0x09C - 0x09F 27 终止并驻留程序

0x098 - 0x09B 26 绝对磁盘写功能

0x094 - 0x097 25 绝对磁盘读功能

0x090 - 0x093 24 严重错误处理(用户不能直接调用)

0x08C - 0x08F 23 Ctrl+Break 处理地址(用户不能直接调用)

0x088 - 0x08B 22 程序中止时DOS返回地址(用户不能直接调用)

0x084 - 0x087 21 DOS系统功能调用

0x080 - 0x083 20 DOS中断返回

数据表指针

0x07C - 0x07F 1F 图形字符扩展码

0x078 - 0x07B 1E 软盘参数块

0x074 - 0x077 1D 视频参数块

提供给用户的中断

0x070 - 0x073 1C 定时器控制的软中断

0x06C - 0x06F 1B Ctrl + Break控制的软中断

BIOS中断

0x068 - 0x06B 1A 时钟管理

0x064 - 0x067 19 引导装入程序--系统自举

0x060 - 0x063 18 BASIC入口代码--ROM BASIC入口代码

0x05C - 0x05F 17 打印机输出

0x058 - 0x05B 16 键盘I/O

0x054 - 0x057 15 盒式磁带I/O

0x050 - 0x053 14 RS-232串行通讯口I/O

0x04C - 0x04F 13 磁盘I/O

0x048 - 0x04B 12 测定存储器容量

0x044 - 0x047 11 设备检验

0x040 - 0x043 10 屏幕显示I/O

8259中断向量

0x03C - 0x03F F LPT2控制器中断--并行打印机(IRQ7)

0x038 - 0x03B E 磁盘控制器中断--软磁盘(IRQ6)

0x034 - 0x037 D LPT2控制器中断--硬磁盘(并行口)(IRQ5)

0x030 - 0x033 C 异步通信(primary)--串行通信接口1(IRQ4)

0x02C - 0x02F B 异步通信(secondary)--串行通信接口2(IRQ3)

0x028 - 0x02B A 彩色/图形(IRQ2)

0x024 - 0x027 9 键盘(IRQ1)

0x020 - 0x023 8 定时器(IRQ0)

8088中断向量

0x01C - 0x01F 7 保留

0x018 - 0x01B 6 保留

0x014 - 0x017 5 打印屏幕

0x010 - 0x013 4 溢出

0x00C - 0x00F 3 断点指令

0x008 - 0x00B 2 非屏蔽中断

0x004 - 0x007 1 单步(用于DEBUG)

0x000 - 0x003 0 除以零中断向量地址和中断向量

中断向量:中断服务程序的入口地址

中断向量地址:内存中存放中断服务程序入口地址的地址

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/12/23 23:45:36