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 未使用