一.8088中断向量 |
||
0-3 4-7 8-B C-F 10-13 14-17 18-1F |
0 1 2 3 4 5 6,7 |
除以零 单步(用于DEBUG) 非屏蔽中断 断点指令 溢出 打印屏幕 保留 |
二.8259中断向量 |
||
20-23 24-27 28-2B 2C-2F 30-33 34-37 38-3B 3C-3F |
8 9 A B C D E F |
定时器 键盘 彩色/图形 异步通讯(secondary) 异步通讯(primary) 硬磁盘 软磁盘 并行打印机 |
三.BIOS中断 |
||
40-43 44-47 48-4B 4C-4F 50-53 54-57 58-5B 5C-5F 60-63 64-67 68-6B |
10 11 12 13 14 15 16 17 18 19 1A |
屏幕显示 设备检验 测定存储器容量 磁盘I/O 串行通讯口I/O 盒式磁带I/O
打印机输出 BASIC入口代码 引导装入程序 日时钟 |
四.提供给用户的中断 |
||
6C-6F 70-73 |
1B 1C |
Ctrl-Break控制的软中断 定时器控制的软中断 |
五.数据表指针 |
||
74-77 78-7B 7C-7F |
1D 1E 1F |
显示器参量表 软盘参数表 图形表 |
六.DOS中断 |
||
80-83 84-87 88-8B 8C-8F |
20 21 22 23 |
|
90-93 94-97 98-9B 9C-9F A0-BB BC-BF C0-FF |
24 25 26 27 28-2E 2F 30-3F |
|
|
||
100-17F 180-19F 1A0-1FF 200-217 218-3C3 3C4-3FF |
40-5F 60-67 68-7F 80-85 86-F0 F1-FF |
用户软中断 保留 由BASIC保留 BASIC中断 保留 |
DOS功能调用
AH |
功 能 |
调 用 参 数 |
返 回 参 数 |
00 |
程序终止 (同INT 20H) |
CS=程序段前缀 |
|
01 |
键盘输入并回显 |
AL=输入字符 |
|
02 |
显示输出 |
DL=输出字符 |
|
03 |
异步通讯输入 |
AL=输入数据 |
|
04 |
异步通讯输出 |
DL=输出数据 |
|
05 |
打印机输出 |
DL=输出字符 |
|
06 |
直接控制台I/O |
DL=FF(输入) DL=字符(输入) |
|
07 |
键盘输入(无回显) |
AL=输入字符 |
|
08 |
键盘输入(无回显) 检测Ctrl-break |
AL=输入字符 |
|
09 |
显示字符串 |
DS:DX=串地址"&"结束字符串 |
|
0A |
键盘输入到缓冲区 |
DS:DX=缓冲区首地址(DS:DX)=缓冲区最大 (DS:DX+1)=实字符数际输入的字符数 |
|
0B |
检验键盘状态 |
AL=00有输入,AL=FF无输入 |
|
0C |
清除输入缓冲区并请求指定的输入功能 |
AL=输入功能号(1,6,7,8,A) |
|
0D |
磁盘复位 |
清除文件缓冲区 |
|
0E |
指定当前缺省的磁盘驱动器 |
DL=驱动器号 AL=驱动器数0=A,1=B,... |
|
0F |
打开文件 |
DS:DX=FCB首地址 |
AL=00文件找到 AL=FF文件未找到 |
10 |
关闭文件 |
DS:DX=FCB首地址 |
AL=00目录修改成功 AL=FF目录中未找到文件 |
11 |
查找第一个目录项 |
DS:DX=FCB首地址 |
AL=00找到,AL=FF未找到 |
12 |
查找下一个目录项 |
DS:DX=FCB首地址(文件名中带*或?) |
AL=00找到,AL=FF未找到 |
13 |
删除文件 |
DS:DX=FCB首地址 |
AL=00删除成功, AL=FF未找到 |
14 |
顺序读 |
DS:DX=FCB首地址 |
AL=00 读成功 =01 文件结束, 记录中无数据 =02 DTA空间不够 =03 文件结束,记录不完整 |
15 |
顺序写 |
DS:DX=FCB首地址 |
AL=00 写成功 =01 盘满 =02DTA空间不够 |
16 |
建文件 |
DS:DX=FCB首地址 |
AL=00 建立成功 =FF 无磁盘空间 |
17 |
文件改名 |
DS:DX=FCB 首地址(DS:DX+1)=旧文件名 (DS:DX+17)=新文件名 |
AL= 00 成功 = FF 未成功 |
19 |
取当前缺省磁盘 |
AL=缺省的驱动器 驱动器 号0=A,1=B,2=C,. |
|
1A |
置DTA地址 |
DS:DX=DTA地址 |
|
1B |
取缺省驱动器FAT信息 |
AL=每簇的扇区数 DS:BX=FTA标识字节 CX=物理扇区的大小 DX=缺省驱动器的簇数 |
|
1C |
取任一驱动器FAT信息 |
DL=驱动器号 |
同上 |
21 |
随机读 |
DS:DX=FCB首地址 |
AL=00读成功 =01文件结束 =缓冲区溢出 =03缓冲区不满 |
22
|
随机写 |
DS:DX=FCB首地址 |
AL=00成功 =01盘满 =02缓冲区溢出 |
23 |
测定大小 |
DS:DX=FCB首地址 |
AL=00成功 文件长度填入FCB AL=FF未找到 |
24 |
设置随机记录号 |
DS:DX=FCB首地址 |
|
25 |
设置中断向量 |
DS:DX=中断向量 AL=中断类型号 |
|
26 |
建立程序段前缀 |
DX=新的程序段的段前缀 |
|
27 |
随机分块读 |
DS:DX=FCB首地址 CX=记录数 |
AL= 00读成功 = 01文件结束 = 02缓冲区太小,传输结束 = 03缓冲区不满 CX=读取的记录数 |
28 |
随机分块写 |
DS:DX=FCB首地址 CX=记录数 |
AL=00写成功 AL=01盘满 =02缓冲区溢出 |
29 |
分析文件名 |
ES:DI=FCB首地址 DS:SI=ASCII串 AL=控制分析标志 |
AL=00标准文件 =01多义文件 =FF非法盘符 |
2A |
取日期 |
CX=年 DH:DL=月:日(二进制) |
|
2B |
设置日期 |
CX:DH:DL=年:月:日 |
AL=00成功, AL=FF无效 |
2C |
取时间 |
CH:CL=时:分 DH:DL=秒:1/100秒 |
|
2D |
设置时间 |
CH:CL=时:分 DH:DL=秒:1/100秒 |
AL=00成功 AL=FF无效 |
2E |
置磁盘自动读写标志 |
AL=00关闭标志 AL=01打开标志 |
|
2F |
取磁盘缓冲区的首址 |
ES:BX=缓冲区首址 |
|
30 |
取DOS版本号 |
AH=发行号,AL=版号 |
|
31 |
结束并驻留 |
AL=返回码, DX=驻留区大小 |
|
33 |
Ctrl-Break检测 |
AL=00取状态 AL=01置状态(DL) DL=00关闭检测 =01打开检测 |
DL=00关闭Ctrl-Break检测 =01打开Ctrl-Break检测 |
35 |
取中断向量 |
AL=中断类型 |
ES:BX=中断向量 |
36 |
取空闲磁盘空间 |
DL=驱动器号 0=缺省,1=A,2=B… |
成功:AX=每簇扇区数,BX=有效簇数,CX=每扇区字节数,DX=总簇数 失败:AX=FFFF |
38 |
置/取国家信息 |
DS:DX=信息区首地址 |
BX=国家码(国际电话前缀码) AX=错误码 |
39 |
建立子目录(MKDIR) |
DS:DX=ASCII 串地址 |
AX=错误码 |
3A |
删除子目录(RMDIR) |
DS:DX=ASCII 串地址 |
AX=错误码 |
3B |
改变当前目录(CHDIR) |
DS:DX=ASCII 串地址 |
AX=错误码 |
3C |
建立文件 |
DS:DX=ASCII 串地址 CX=文件属性 |
成功:AX=文件代号 失败:AX=错误码 |
3D |
打开文件 |
DS:DX=ASCII 串地址 AL=0读, =1写,=2读/写 |
成功:AX=文件代号 失败:AX=错误码 |
3E |
关闭文件 |
BX=文件号 |
失败:AX=错误码 |
3F |
读文件或设备 |
DS:DX=数据缓冲区地址 BX=文件代号 CX=读取的字节数 |
读成功: AX=实际读入的字节数AX=0 已到文件尾 读出错:AX=错误码 |
40 |
写文件或设备 |
DS:DX=数据缓冲区地址 BX=文件代号 CX=写入的字节数 |
写成功: AX=实际写入的字节数 写出错: AX=错误码 |
41 |
删除文件 |
DS:DX=ASCIIZ串地址 |
成功:AX=00,出错:AX=错误码(2,5) |
42 |
移动文件指针 |
BX=文件代号 CX:DX=位移量 AL=移动方式(0,1,2) |
成功:DX:AX=新指针位置 出错:AX=错误码 |
43 |
置/取文件属性 |
DS:DX=ASCII 串地址 AL=0取文件属性 AL=1置文件属性 CX=文件属性 |
成功:CX=文件属性 失败:AX=错误码 |
44 |
设备文件I/O控制 |
BX=文件代号 AL=0取状态 =1置状态DX =2读数据 =3写数据 =6取输入状态 =7取输出状态 |
DX=设备信息 |
45 |
复制文件代号 |
BX=文件代号1 |
成功:AX=文件代号2 失败:AX=错误码 |
46 |
人工复制文件代号 |
BX=文件代号1 CX=文件代号2 |
失败:AX=错误码 |
47 |
取当前目录路径名 |
DL=驱动器号 DS:SI=ASCIIZ串地址 |
(DS:SI=ASCIIZ串) 失败:AX=错误码 |
48 |
分配内存空间 |
BX=申请内存容量 |
成功:AX=分配内存首址 失败:BX=最大可用空间 |
49 |
释放内存空间 |
ES=内存起始段地址 |
失败:AX=错误码 |
4A |
调整已分配的存储块 |
ES=原内存起始地址 BX=再申请的容量 |
失败:BX=最大可用空间 AX=错误码 |
4B |
装配/执行程序 |
DS:DX=ASCIIZ串地址 ES:BX=参数区首地址 AL=0装入执行 AL=3装入不执行 |
失败:AX=错误码 |
4C |
带返回码结束 |
AL=返回码 |
|
4D |
取返回码 |
AX=返回代码 |
|
4E |
查找第一个匹配文件 |
DS:DX=ASCIIZ串地址 CX=属性 |
AX=出错代码(02,18) |
4F |
查找下一个匹配文件 |
DS:DX=ASCII 串地址 (文件名中带?或*) |
AX=出错代码(18) |
54 |
取盘自动读写标志 |
AL=当前标志值 |
|
56 |
文件改名 |
DS:DX=ASCII 串(旧) ES:DI=ASCIIZ串(新) |
AX=出错码(03,05, 17) |
57 |
置/取文件目期和时间 |
BX=文件代号 AL=0读取 AL=1设置(DX:CX) |
DX:CX=日期和时间 失败:AX=错误码 |
58 |
取/置分配策略码 |
AL=0取码 =1置码(BX) BX=策略码 |
成功:AX=策略码 失败:AX=错误码 |
59 |
取扩充错误码 |
AX=扩充错误码 BH=错误类型 BL=建议的操作 CH=错误场所 |
|
5A |
建立临时文件 |
CX=文件属性 DS:DX=ASCIIZ串地址 |
成功:AX=文件代号 失败:AX=错误码 |
5B |
建立新文件 |
CX=文件属性 DS:DX=ASCIIZ串地址 |
成功:AX=文件代号 失败:AX=错误码 |
5C |
控制文件存取 |
AL=00封锁,=01开启 BX=文件代号 CX:DX=文件位移 SI:DI=文件长度 |
失败:AX=错误码 |
62 |
取程序段前缀地址 |
BX=PSP地址 |
* AH=0-2E适用DOS1.0以上版本;
AH=2F-57适用DOS2.0以上版本;
AH=58-62适用DOS3.0以上版本.
BIOS中断
INT |
AH |
功能 |
调 用 参 数 |
返 回 参 数 |
10 |
0 |
设置显示方式 |
AL=00 40*25黑白方式 =01 40*25彩色方式 =02 80*25黑白方式 =03 80*25彩色方式 =04 320*200彩色图形方式 =05 320*200黑白图形方式 =06 640*200黑白图形方式 =07 80*25单色文本方式 =08 160*200 16色图形 =09 320*200 16色图形 =0A 640*200 16色图形 =0B 保留(EGA) =0C 保留(EGA) =0D 320*200彩色图形(EGA) =0E 640*200彩色图形(EGA) =0F 640*350黑白图形(EGA) =10 640*350彩色图形(EGA) =11 640*480单色图形(EGA) =12 640*480 16色图形(EGA) =13 320*200 256色图形(EGA) =40 80*30彩色文本(CGE400) =41 80*50彩色文本(CGE400) =42 640*400彩色文本(CGE400) |
|
10 |
1 |
置光标类型 |
(CH)0-3=光标起始行 (CL)0-3=光标结束行 |
|
10 |
2 |
置光标位置 |
BH=页号,DH,DL=行,列 |
|
10 |
3 |
读光标位置 |
BH=页号 |
CH=光标起始行,DH,DL=行,列 |
10 |
4 |
读光笔位置 |
AH=0光笔未触发,=1光笔触发CH=象素行, BX=象素列,DH=字符行,DL=字符列 |
|
10 |
5 |
置显示页 |
AL=页号 |
|
10 |
6 |
屏幕初始化或上卷 |
AL=上卷行数,AL=0整个窗口空白BH=卷入行属性,CH=左上角行号, CL=左上角列号,CH=右下角行号,DL=右下角列号 |
|
10 |
7 |
屏幕初始化或下卷 |
AL=下卷行数,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图形) |
BH=彩色调板ID BL=和ID配套使用的颜色 |
|
10 |
C |
写象素 |
DX=行(0-199) CX=列(0-639) AL=象素值 |
|
10 |
D |
读象素 |
DX=行(0-199) CX=列(0-639) |
AL=象素值 |
10 |
E |
显示字符(光标前移) |
AL=字符,BL=前景色 |
|
10 |
F |
取当前显示方式 |
AH=字符列数,AL=显示方式 |
|
10 |
13 |
显示字符串(适用AT) |
ES:BP=串地址,CX=串长度 DH,DL=起始行,列,BH=页号 AL=0,BL=属性 串:char,char... AL=1,BL=属性 串:char,char... AL=2 串:char,attr,char, attr,... AL=3 串:char,attr,char,attr,... |
光标返回起始位置
光标跟随移动
光标返回起始位置
光标跟随移动 |
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 |
软盘系统复位 |
||
13 |
1 |
读软盘状态 |
AL=状态字节 |
|
13 |
2 |
读磁盘 |
AL=扇区数 CH,CL=磁道号,扇区号 DH,DL=磁头号,驱动器号 ES:BX=数据缓冲区地址 |
读成功:AH=0 AL=读取的扇区数 读失败: AH=出错代码 |
13 |
3 |
写磁盘 |
同上 |
写成功:AH=0 AL=写入的扇区数 写失败: AH=出错代码 |
13 |
4 |
检验磁盘扇区 |
同上(ES:BX不设置) |
成功:AH=0 AL=检验的扇区数 失败:AH=出错代码 |
13 |
5 |
格式化盘磁道 |
ES:BX=磁道地址 |
成功:AH=0 失败:AH=出错代码 |
14 |
0 |
初始化串行通讯口 |
AL= 初始化参数 DX=通讯口号(0,1) |
AH = 通讯口状态 AL = 调制解调器状态 |
14 |
1 |
向串行通讯口写字符 |
AL=字符,DX=通讯口号(0,1) |
写成功:(AH)7=0 写失败:(AH)7=1 (AH)0-5=通讯口状态 |
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无引导,=80非法命令 |
15 |
3 |
磁带分块写 |
DS:BX=数据传输区地址 CX=字节数 |
AH=状态字节(同上) |
16 |
0 |
从键盘读字符 |
AL=字符码,AH=扫描码 |
|
16 |
1 |
读键盘缓冲区字符 |
ZF=0 AL=字符码,AH=扫描码 ZF=1 缓冲区空 |
|
16 |
2 |
取键盘状态字节 |
AL=键盘状态字节 |
|
17 |
0 |
打印字符,回送状态字节 |
AL=字符,DX=打印机号 |
AH=打印机状态字节 |
17 |
1 |
初始化打印机,回送状态字节 |
DX=打印机号 |
AH=打印机状态字节 |
17 |
2 |
取状态字节 |
DX=打印机号 |
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 |
清除报警 |