BIOS 中断简介
PC主板中固化了一段程序,叫做BIOS。
主板加电后,运行于实模式,将CS:IP强制置为0xffff0,此处一般为一跳转指令,跳转到BIOS的入口地址。
BIOS在初始化后,会建立BIOS中断向量表,存入于物理地址:0x0000~0x3ff处,即物理地址的前1024个字节。BIOS有256个断向量,每个中断使用4个字节,这4个字节描述了一个中断处理程序的段基地址和段内偏移地址(CS:IP).
BIOS中断向量号为:0~255(0xff),其内部又分使用类型分为几类,其内容如下:
8088中断向量
内存地址(16进制) |
对应向量号(16进制) |
中断用途 |
0x000 - 0x003 |
0 |
除以0 |
0x004 - 0x007 |
1 |
单步(用于debug) |
0x008 - 0x00B |
2 |
非屏蔽中断 |
0x00C - 0x00F |
3 |
断点指令 |
0x010 - 0x013 |
4 |
溢出 |
0x014 - 0x017 |
5 |
打印屏幕 |
0x018 - 0x01B |
6 |
保留 |
0x01C - 0x01F |
7 |
保留 |
8259中断向量
内存地址(16进制) |
对应向量号(16进制) |
中断用途 |
0x020 - 0x023 |
8 |
定时器(IRQ0) |
0x024 - 0x027 |
9 |
键盘(IRQ1) |
0x028 - 0x02B |
A |
彩色/图形(IRQ2) |
0x02C - 0x02F |
B |
异步通信(secondary)—串行通信接口2(IRQ3) |
0x030 - 0x033 |
C |
异步通信(primary)—串行通信接口1(IRQ4) |
0x034 - 0x037 |
D |
LPT2控制器中断—硬磁盘(并行口)(IRQ5) |
0x038 - 0x03B |
E |
磁盘控制器中断—软磁盘(IRQ6) |
0x03C - 0x03F |
F |
LPT2控制器中断—并行打印机(IRQ7) |
BIOS中断
内存地址(16进制) |
对应向量号(16进制) |
中断用途 |
0x040 - 0x043 |
10 |
屏幕显示I/O |
0x044 - 0x047 |
11 |
设备检验 |
0x048 - 0x04B |
12 |
测定存储器容量 |
0x04C - 0x04F |
13 |
磁盘I/O |
0x050 - 0x053 |
14 |
RS-232串行通讯口I/O |
0x054 - 0x057 |
15 |
盒式磁带I/O |
0x058 - 0x05B |
16 |
键盘I/O |
0x05C - 0x05F |
17 |
打印机输出 |
0x060 - 0x063 |
18 |
BASIC入口代码—ROM BASIC入口代码 |
0x064 - 0x067 |
19 |
引导装入程序—系统自举 |
0x068 - 0x06B |
1A |
时钟管理 |
提供给用户的中断
内存地址(16进制) |
对应向量号(16进制) |
中断用途 |
0x06C - 0x06F |
1B |
Ctrl + Break控制的软中断 |
0x070 - 0x073 |
1C |
定时器控制的软中断 |
数据表指针
内存地址(16进制) |
对应向量号(16进制) |
中断用途 |
0x074 - 0x077 |
1D |
视频参数块 |
0x078 - 0x07B |
1E |
软盘参数块 |
0x07C - 0x07F |
1F |
图形字符扩展码 |
DOS中断向量
内存地址(16进制) |
对应向量号(16进制) |
中断用途 |
0x080 - 0x083 |
20 |
DOS中断返回 |
0x084 - 0x087 |
21 |
DOS系统功能调用 |
0x088 - 0x08B |
22 |
程序中止时DOS返回地址(用户不能直接调用) |
0x08C - 0x08F |
23 |
Ctrl+Break 处理地址(用户不能直接调用) |
0x090 - 0x093 |
24 |
严重错误处理(用户不能直接调用) |
0x094 - 0x097 |
25 |
绝对磁盘读功能 |
0x098 - 0x09B |
26 |
绝对磁盘写功能 |
0x09C - 0x09F |
27 |
终止并驻留程序 |
0x0A0 - 0x0A3 |
28 |
DOS安全使用 |
0x0A4 - 0x0A7 |
29 |
快速写字符 |
0x0A8 - 0x0AB |
2A |
Microsoft 网络接口 |
0x0AC - 0x0B7 |
2B-2D |
未使用 |
0x0B8 - 0x0BB |
2E |
基本SHELL程序装入 |
0x0BC - 0x0BF |
2F |
多路服务中断 |
0x0C0 - 0x0CB |
30-32 |
未使用 |
0x0CC - 0x0CF |
33 |
鼠标中断 |
0x0D0 - 0x0EB |
34-40 |
未使用 |
0x104 – 0x107 |
41 |
硬盘参数块 |
0x108 – 0x10F |
42-43 |
未使用 |
0x110 – 0x113 |
44 |
PC机使用,用于指向低分辩率图形字符参数表 |
0x114 – 0x117 |
45 |
保留 |
0x118 – 0x11B |
46 |
第二硬盘参数块 |
BASIC中断向量
内存地址(16进制) |
对应向量号(16进制) |
中断用途 |
x11C – 0x11F |
47 |
保留 |
x120 – 0x123 |
48 |
PC机使用,用于把PC机的键盘代码变换为标准的键盘代码 |
x124 – 0x127 |
49 |
指向键盘增强服务变换表 |
x128 – 0x17F |
4A-5F |
保留 |
x180 – 0x19F |
60-57 |
为用户程序保留的单元 |
x1A0 – 0x1BF |
68-6F |
未使用 |
x1C0 – 0x1C3 |
70 |
硬件中断 |
x1C4 – 0x1C7 |
71 |
硬件中断9 |
x1C8 – 0x1CB |
72 |
硬件中断10 |
x1CC – 0x1CF |
73 |
硬件中断11 |
x1D0 – 0x1D3 |
74 |
硬件中断12 |
x1D4 – 0x1D7 |
75 |
硬件中断13 |
x1D8 – 0x1DB |
76 |
硬件中断14 |
x1DC – 0x1DF |
77 |
硬件中断15 |
x1E0 – 0x1FF |
78-7F |
未使用 |
x200 – 0x217 |
80-85 |
为BASIC保留 |
x218 – 0x3C3 |
86-F0 |
BASIC程序运行 |
时提供给BASIC解释程序作用 |
x3C4 – 0x3FF |
F1-FF |
未使用 |