BIOS 中断呼叫是一组功能,提供DOS程式与一些软件(例如启动程式)去使用IBM_PC兼容机的BIOS的功能。一些操作系统在系统引导的时候也使用BIOS以检测并初始化硬件资源。
[编辑]中断调用
若要调用中断,可以使用X86汇编语言的INT指令。 例如,如下的x86汇编语言指令可以使用BIOS的0x10中断向屏幕打印一个字符。
mov ah, 0x0e
mov al, '!'
int 0x10
[编辑]BIOS中断向量表
| 中断 | 描述 |
|---|
| INT 00h | CPU: 除零错,或商不合法时触发 |
| INT 01h | CPU: 单步陷阱,TF标记为打开状态时,每条指令执行后触发 |
| INT 02h | CPU: 非可屏蔽中断, 如 系统自举 时发生内存错误触发。 |
| INT 03h | CPU: 第一个未定义的中断向量, 约定俗成仅用于调试程序 |
| INT 04h | CPU: 算数溢出。通常由INTO指令在置溢出位时触发。 |
| INT 05h | 在按下Shift-PrintScreen或BOUND指令检测到范围异常时触发。 |
| INT 06h | CPU: Called when the Undefined Opcode (invalid instruction) exception occurs. Usually installed by the operating system. |
| INT 07h | CPU: Called when an attempt was made to execute a floating-point instruction and no numeric coprocessor was available. |
| INT 08h | IRQ0: Implemented by the system timing component; called 18.2 times per second (once every 55 ms) by thePIC |
| INT 09h | IRQ1: Called after every key press and release (as well as during the time when a key is being held) |
| INT 0Ah | IRQ2: |
| INT 0Bh | IRQ3: Called by serial ports 2 and 4 (COM2/4) when in need of attention |
| INT 0Ch | IRQ4: Called by serial ports 1 and 3 (COM1/3) when in need of attention |
| INT 0Dh | IRQ5: Called by hard disk controller (PC/XT) or 2nd parallel port LPT2 (AT) when in need of attention |
| INT 0Eh | IRQ6: Called by floppy disk controller when in need of attention |
| INT 0Fh | IRQ7: Called by 1st parallel port LPT1 (printer) when in need of attention |
| INT 10h | 显示服务 - 由BIOS或操作系统设定以供软件调用
| AH=00h | 设定显示模式 | | AH=01h | 设定游标形态 | | AH=02h | 设定游标位置 | | AH=03h | 获取游标位置与形态 | | AH=04h | 获取光笔位置 | | AH=05h | 设定显示页 | | AH=06h | 清除或卷轴画面(上) | | AH=07h | 清除或卷轴画面(下) | | AH=08h | 读取游标处字符与属性 | | AH=09h | 更改游标处字符与属性 | | AH=0Ah | 更改游标处字符 | | AH=0Bh | 设定边界颜色 | | AH=0Eh | 在TTY模式下写字符 | | AH=0Fh | 取得目前显示模式 | | AH=13h | 写字符串 | |
| INT 11h | Installed by the BIOS; returns equipment list |
| INT 12h | Installed by the BIOS or operating system; returns Conventional Memory Size |
| INT 13h | 低阶磁盘服务; installed by the BIOS or operating system; called by software programs
| AH=00h | Reset Disk Drives | | AH=01h | Check Drive Status | | AH=02h | Read Sectors From Drive | | AH=03h | Write Sectors To Drive | | AH=04h | Verifies Sectors On Drive | | AH=05h | Format Track On Drive | | AH=08h | Get Drive Parameters | | AH=09h | Init Fixed Drive Parameters | | AH=0Ch | Seek To Specified Track | | AH=0Dh | Reset Fixed Disk Controller | | AH=15h | Get Drive Type | | AH=16h | Get Floppy Drive Media Change Status | |
| INT 14h | Routines for communicating via the serial port. Used by software programs.
| AH=00h | Serial Port Initialization | | AH=01h | Transmit Character | | AH=02h | Receive Character | | AH=03h | Status | |
| INT 15h | Miscellaneous (System services support routines)
| AH=4FH | Keyboard Intercept | | AH=83H | Event Wait | | AH=84H | Read Joystick | | AH=85H | Sysreq Key Callout | | AH=86H | Wait | | AH=87H | Move Block | | AH=88H | Get Extended Memory Size | | AH=C0H | Get System Parameters | | AH=C1H | Get Extended BIOS Data Area Segment | | AH=C2H | Pointing Device Functions | | AH=E8h, AL=01h (AX = E801h) | Get Extended Memory Size(Newer function, since 1994). Gives results for memory size above 64 Mb. | | AH=E8h, AL=20h (AX = E820h) | Query System Address Map. The information returned from e820 supersedes what is returned from the older AX=E801h and AH=88h interfaces. | |
| INT 16h | Implemented by the BIOS or operating system. Provides routines to be called by software programs which communicate with the keyboard.
| AH=00h | Read Character | | AH=01h | Read Input Status | | AH=02h | Read Keyboard Shift Status | | AH=10h | Read Character Extended | | AH=11h | Read Input Status Extended | | AH=12h | Read Keyboard Shift Status Extended | |
| INT 17h | Print Services - used by software programs to communicate with the printer
| AH=00h | Print Character to Printer | | AH=01h | Initialize Printer | | AH=02h | Check Printer Status | |
| INT 18h | Execute Cassette BASIC: True IBM computers contain BASIC in the ROM to be interpreted and executed by this routine in the event of a boot failure (called by the BIOS) |
| INT 19h | After POST this interrupt is used by BIOS to load the operating system. |
| INT 1Ah | 即时的时钟(RTC)服务 - called by software programs to communicate with the RTC
| AH=00h | 读取 RTC | | AH=01h | 设定 RTC | | AH=02h | 读取 RTC 时间 | | AH=03h | 设定 RTC 时间 | | AH=04h | 读取 RTC 日期 | | AH=05h | 设定 RTC 日期 | | AH=06h | 设定 RTC Alarm | | AH=07h | Reset RTC Alarm | |
| INT 1Bh | Installed by the operating system; automatically called by INT 9 when Ctrl-Break has been pressed |
| INT 1Ch | Called automatically by INT 08; available for use by software programs when a routine needs to be executed regularly |
| INT 1Dh | Not to be called; simply a pointer to the VPT (Video Parameter Table), which contains data on video modes |
| INT 1Eh | Not to be called; simply a pointer to the DPT (Diskette Parameter Table), containing a variety of information concerning the diskette drives |
| INT 1Fh | Not to be called; simply a pointer to the VGCT (Video Graphics Character Table), which contains the data for ASCII characters 80h to FFh |
| INT 41h | Address pointer: FDPT = Fixed Disk Parameter Table (1st hard drive) |
| INT 46h | Address pointer: FDPT = Fixed Disk Parameter Table (2nd hard drive) |
| INT 4Ah | Called by RTC for alarm |
| INT 70h | IRQ8: 由 RTC 呼叫 |
| INT 74h | IRQ12: 由鼠标呼叫 |
| INT 75h | IRQ13: Called by math coprocessor |
| INT 76h | IRQ14: 由第一个 IDE 控制器所呼叫 |
| INT 77h | IRQ15: 由第二个 IDE 控制器所呼叫 |
[编辑]外部链接