1 -- 关于中断向量的几点注释
1. 系统引导时,中断向量表放在内存何处?
系统刚引导时,内存0x00000到0x0003FF共1KB的空间用于存放中断向量表。每个中断向量占用4个字节,共可存储256个中断向量。
2. 系统引导时,处在实模式下,只可寻址1MB,为什么要用4个字节来寻址中断呢处理程序?
刚看到的时候,我也很纳闷。我们都知道编程的时候指针都是4个字节的,可以寻址4GB,在实模式下完全可以少用字节啊?其实实模式的内存选址方式是:段值 * 16 + 偏移值,就是内存地址。而这4个字节中,2个字节存储段值,两外两个存储偏移值。所以共有4个字节。
3. 这篇资料是看书和从网上整理而来的,不同的资料间往往有些冲突的地方,这样就难免有些错误,以后再做修订。
2 -- 中断向量表
内存地址(十六进制) | 对应向量号(十六进制) | 中断用途 |
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 | 除以零 |