常用中断
INT | AH | 功能 | 调用参数 | 返回参数 |
10 |
0 |
设置显示方式: AL6~0为显示模式号,1.AL7=0:先清屏,再转为新模式 |
AL=00 40×25黑白方式 AL=01 40×25彩色方式 AL=02 80×25黑白方式 AL=03 80×25彩色方式 AL=04 320×200彩色图形方式 AL=05 320×200黑白图形方式 AL=06 320×200黑白图形方式 AL=07 80×25单色文本方式 AL=08 160×200 16色图形 (PCjr) AL=09 320×200 16色图形 (PCjr) AL=0A 640×200 16色图形 (PCjr) AL=0B 保留(EGA) AL=0C 保留(EGA) AL=0D 320×200 彩色图形 (EGA) AL=0E 640×200 彩色图形 (EGA) AL=0F 640×350 黑白图形 (EGA) AL=10 640×350 彩色图形 (EGA) AL=11 640×480 单色图形 (EGA) AL=12 640×480 16色图形 (EGA) AL=13 320×200 256色图形 (EGA) AL=40 80×30 彩色文本(CGE400) AL=41 80×50 彩色文本(CGE400) AL=42 640×400 彩色图形(CGE400) |
|
10 |
1 |
设置光标大小 (仅在文本显示模式下有效) |
(CH)0-3=光标起始处行号 (CL)0-3=光标结束处行号 |
|
10 |
2 |
设置光标位置 |
BH=光标所在处的页号 DH=行号 DL=列号 |
|
10 |
3 |
读光标当前所在位置 |
BH=页号 |
AX = 0000h (Phoenix BIOS) DH,DL=行,列 CH = 开始扫描行号 CL = 结束扫描行号 |
10 |
4 |
读光笔当前所在位置 (适用于EGA显示卡) |
AH=0 光笔未打开 =1 光笔已打开,且以下参数有效: CX=象素行(图形) BX=象素列(图形) DH=字符行(文本) DL=字符列(文本) |
|
10 | 5 | 置显示页 | AL=页号 | |
10 |
6 |
屏幕初始化或向上卷动屏幕 |
AL=上卷行数 AL=0 :整个窗口空白 AL!=0:屏幕底部为空白输入行 BH=空白行属性 CH=左上角行号 CL=左上角列号 DH=右下角行号 DL=右下角列号 |
|
10 |
7 |
屏幕初始化或向下卷动屏幕 |
AL=下卷行数 AL=0 整个窗口空白 AL!=0:屏幕顶部为空白输入行 BH=空白行属性 CH=左上角行号 CL=左上角列号 DH=右下角行号 DL=右下角列号 |
|
10 |
8 |
读光标位置的字符和属性 (仅文本显示模式下有效) |
BH=页号 |
AH=光标所在处字符属性 AL=光标所在处字符编码 |
10 |
9 |
在光标位置显示字符及属性 |
BH=页号 AL=欲写字符的编码 BL=欲写字符的属性 CX=字符重复次数 |
|
10 |
A |
在光标位置显示字符 |
BH=显示页 AL=欲写字符的编码 CX=字符重复次数 |
|
10 |
B |
置彩色调板(320×200图形)或边沿色/背景色 (适用于CGA显示卡) |
BH=0:文本模式下设置边沿色,图形模式下设置背景色,BL=将设置的颜色号; BH=1:设置调色板,BL=调色板号 |
|
10 |
C |
写象素 (仅在图形显示模式下有效) |
DX=行(0-199) CX=列(0-639) AL=点的前景色 |
|
10 |
D |
读指定页面指定点的颜色 |
BX=欲读点的页号 DX=行(0-199) CX=列(0-639) |
AL=读得该点的前景色 |
10 |
E |
显示字符 (光标前移一格,如到页尾则自动上卷一行,末行空白) |
AL=欲写字符的编码 BH=页号 BL=字符的前景色号 |
|
10 |
F |
取当前显示状态 | AH=当前每行字符数 BH=当前页号 AL6~0=显示模式号 AL7=1:上次转换未清屏 AL7=0:上次转换前先清屏 |
|
10 |
13 |
显示字符串(适用AT) |
ES:BP=串地址 |
|
11 |
设备检验 |
AX=返回值 bit0=1,配有磁盘 bit1=1,80287协处理器 bit4,5=01,40×25BW(彩色板) =10,80×25BW(彩色板) =11,80×25BW(黑白板) bit6,7=罗盘驱动器 bit9,10,11=RS-232板号 bit12=游戏适配器 bit13=串行打印机 bit14,15=打印机号 |
||
12 | 测定存储器容量 | AX=字节数(KB) | ||
13 | 0 | 磁盘复位 | DL=物理驱动器号(0、1:软盘,80H、81H硬盘) | CF=0:复位成功,此时AH=磁盘状态 CF=1:复位失败 |
13 | 1 | 读磁盘状态 | DL=物理驱动器号(0、1:软盘,80H、81H硬盘) | CF=0:读状态成功,此时AH=磁盘状态(*2*) CF=1:读状态失败 |
13 |
2 |
读扇区状态 |
AL=扇区数 CH,CL=磁道号,扇区号1-63 DH,DL=磁头号,驱动器号 ES:BX=数据缓冲区地址 |
CF=0:读成功, |
13 |
3 |
写指定的扇区 |
同上 |
CF=0:写成功 AH=0 AL=写入的扇区数 CF=1:写失败 AH=出错代码 |
13 |
4 |
检验磁盘扇区 |
同上(ES:BX不设置) |
CF=0:成功 |
13 |
5 |
对指定磁道格式化(硬盘格式化较复杂,这里只针对软盘格式化) | AL=每磁道扇区数 CH=磁道号 DH,DL=磁头号,驱动器号 ES:BX=指向扇区ID的地址指针 |
CF=0:成功 |
13 |
8 | 取当前驱动器参数 | DL=物理驱动器号 |
CF=0:成功 |
13 |
9 | 初始化双驱动器 |
CF=0:初始化成功 |
|
13 |
C | 查找柱面 | CH=磁道号 CL5~0=扇区号 CL7~6=磁道号高2位 DH=磁头号 DL=物理驱动器号 |
CF=0:查找成功 AH=磁盘状态 CF=1:查找失败 |
13 |
D | 备用硬盘复位 | DL=物理驱动器号 | CF=0:复位成功 AH=磁盘状态 CF=1:复位失败 |
13 |
10H | 检测硬盘是否准备好 | DL=物理驱动器号 | CF=0:准备好 AH=磁盘状态 CF=1:未准备好 |
13 |
11H | 调整硬盘驱动器 | DL=物理驱动器号 | CF=0:成功 AH=磁盘状态 CF=1:失败 |
13 |
14H | 硬盘驱动器内部诊断 | CF=0:成功 CF=1:失败 |
|
13 |
15H | 取DASD磁盘类型 | DL=物理驱动器号 | CF=0:成功 AH=DASD磁盘类型值(*4*) CF=1:失败 |
13 |
16H | 取软盘变化 | DL=物理驱动器号 | CF=0:成功 AH=软盘状态值(*5*) CF=1:失败 |
13 |
17H | 设置磁盘格式化类型 |
DL=物理驱动器号 |
CF=0:成功 AH=磁盘状态 CF=1:失败 |
13 |
18H | 设置软盘介质类型 | DL=物理驱动器号 CH=磁道数 CL=每磁道扇区数 ES:DI指向11个字节的介质参数表的首址指针 |
CF=0:设置成功 AH=磁盘状态 CF=1:设置失败 |
13 |
19H | 磁头复位 | DL=物理驱动器号 |
CF=0:复位成功 AH=磁盘状态 CF=1:复位失败 |
14 |
0 |
初始化串行通讯口 |
AL=初始化参数 DX=通讯口号(0,1) |
AH=通读口状态 AL=调制解调器状态 |
14 |
1 |
向串行通讯口写字符 |
AL=字符 DX=通讯口号(0,1) |
写成功:(AH)7=0 写失败:(AH)7=1 (AH)0-6=通讯口状态 |
14 |
2 |
从串行通讯口读字符 |
DX=通讯口号(0,1) |
读成功:(AH)7=0 (AL)=字符 写失败:(AH)7=1 (AH)0-6=通讯口状态 |
14 |
3 |
取通讯口状态 |
DX=通讯口号(0,1) |
AH=通讯口状态 AL=调制解调器状态 |
15 | 0 | 启动盒式磁带马达 | ||
15 | 1 | 停止盒式磁带马达 | ||
15 |
2 |
磁带分块读 |
ES:BX=数据传输区地址 CX=字节数 |
AH=状态字节 AH=00 读成功 =01 冗余检验错 =02 无数据传输 =04 无引导 |
15 |
3 |
磁带分块写 |
DS:BX=数据传输区地址 CX=字节数 |
同上 |
16 | 0 | 从键盘读字符 | AL=字符ASCII码 AH=字符的扫描码 |
|
16 |
1 |
读键盘缓冲区字符 |
ZF=0:键盘已准备好读、但键盘缓冲区指针并未改变 AL=字符ASCII码 AH=扫描码 ZF=1: 键盘尚未准备好读,缓冲区空 |
|
16 | 2 | 读转换键状态 | AL=转换键状态值(*7*) AH大多数BIOS会改变其值 |
|
16 |
3 |
设置按键速率和延迟时间 | AL=设置值 0:默认 1:增加延迟时间 2:按键速率减慢一半 3:增加延时且按键速率减慢一半 4:关闭重发字符 5:设置按键速率与延迟时间 BH=延迟时间 BL=按键速率 |
|
16 |
5 |
键盘写(将字符放回缓冲区) | CL=欲写的字符ASCII码 CH=字符的扫描码 |
AL=00H:成功 AL=01H:缓冲区已满,操作失败 |
16 |
10H |
读扩展键盘 | AL=读得字符的ASCII码 AH=字符的扫描码 |
|
16 |
11H |
读取扩展键盘状态 | ZF=0:键盘已准备好读、但键盘缓冲区指针并未改变 AL=字符ASCII码 AH=扫描码 ZF=1: 键盘尚未准备好读,缓冲区空 |
|
16 |
12H |
读取扩展转换键状态 | AL=转换键状态值(*7*) AH=扩展转换键状态值(*8*) |
|
17 |
0 |
打印一个字符 回送状态字节 |
AL=欲打印字符的ASCII码 DX= 打印机号(0~2) |
AH=打印机状态字节 AH7=0:打印机忙 AH7=1:打印机空闲 AH6=1:打印机响应 AH5=1:无打印纸 AH4=1:已联机 AH3=1:出错 AH2~1:保留 AH0=1:超时 |
17 |
1 |
初始化打印机 回送状态字节 |
DX=打印机号(0~2) |
AH=打印机状态字节(同上) |
17 | 2 | 取打印机状态 | DX=打印机号(0~2) | AH=打印机状态字节(同上) |
1A |
0 |
读时钟 |
CH:CL=时:分 DH:DL=秒:1/100秒 |
|
1A |
1 |
置时钟 |
CH:CL=时:分 DH:DL=秒:1/100秒 |
|
1A |
2 |
读实时钟 |
CH:CL=时:分(BCD) DH:DL=秒:1/100秒(BCD) |
|
1A | 6 | 置报警时间 | CH:CL=时:分(BCD) DH:DL=秒:1/100秒(BCD) |
|
1A | 7 | 清除报警 |
注:
(*1*)
例:
AL=0
串:char,char,...
(光标返回起始位置)
AL=1
串:char,char,...
(光标跟随移动)
AL=2,BL=属性串:char,attr,char,attr,...
(光标返回起始位置)
AL=3,BL=属性串:char,attr,char,attr,...
(光标跟随移动)
(*2*)
Values for disk operation status:
00h successful completion
01h invalid function in AH or invalid parameter
02h address mark not found
03h disk write-protected
04h sector not found/read error
05h reset failed (hard disk)
05h data did not verify correctly (TI Professional PC)
06h disk changed (floppy)
07h drive parameter activity failed (hard disk)
08h DMA overrun
09h data boundary error (attempted DMA across 64K boundary or >80h sectors)
0Ah bad sector detected (hard disk)
0Bh bad track detected (hard disk)
0Ch unsupported track or invalid media
0Dh invalid number of sectors on format (PS/2 hard disk)
0Eh control data address mark detected (hard disk)
0Fh DMA arbitration level out of range (hard disk)
10h uncorrectable CRC or ECC error on read
11h data ECC corrected (hard disk)
20h controller failure
31h no media in drive (IBM/MS INT 13 extensions)
32h incorrect drive type stored in CMOS (Compaq)
40h seek failed
80h timeout (not ready)
AAh drive not ready (hard disk)
B0h volume not locked in drive (INT 13 extensions)
B1h volume locked in drive (INT 13 extensions)
B2h volume not removable (INT 13 extensions)
B3h volume in use (INT 13 extensions)
B4h lock count exceeded (INT 13 extensions)
B5h valid eject request failed (INT 13 extensions)
BBh undefined error (hard disk)
CCh write fault (hard disk)
E0h status register error (hard disk)
FFh sense operation failed (hard disk)
(*3*)软盘格式化错误信息
Offset Size Description (Table 0212)
00h BYTE track number
01h BYTE head number (0-based)
02h BYTE sector number
03h BYTE sector size (00h=128 bytes, 01h=256 bytes, 02h=512, 03h=1024)
(*4*)DASD磁盘类型值
00h no such drive 磁盘驱动器不存在
01h floppy without change-line support 磁盘驱动器不能改变当前检测
02h floppy (or other removable drive) with change-line support 磁盘驱动器能改变当前检测
03h hard disk 硬盘
(*5*)软盘状态值
00h 软盘无变化
01h invalid command (SyQuest) 无效的软盘参数
06h change line active or not supported 软盘已改变
80h drive not ready or not present 驱动器未准备好
(*6*)磁盘格式化类型
01h = 320/360K disk in 360K drive
02h = 320/360K disk in 1.2M drive
03h = 1.2M disk in 1.2M drive
04h = 720K disk in 720K or 1.44M drive
(*7*)转换键状态值
Bitfields for keyboard shift flags:
Bit(s) Description (Table 0556)
7 Insert active
6 CapsLock active
5 NumLock active
4 ScrollLock active
3 Alt key pressed (either Alt on 101/102-key keyboards)
2 Ctrl key pressed (either Ctrl on 101/102-key keyboards)
1 left shift key pressed
0 right shift key pressed
(*8*)扩展转换键状态值
Bitfields for keyboard shift flags 2:
Bit(s) Description (Table 0562)
7 SysReq key pressed (SysReq is often labeled SysRq)
6 CapsLock pressed
5 NumLock pressed
4 ScrollLock pressed
3 right Alt key pressed
2 right Ctrl key pressed
1 left Alt key pressed
0 left Ctrl key pressed