一 .8088 中断向量 一.8088中断向量 | ||
0-3 4-7 8-B C-F 10-13 14-17 18-1F | 0 1 2 3 4 6,7 | 除以零 ( 用于 DEBUG) (用于DEBUG) 非屏蔽中断 断点指令 溢出 打印屏幕 保留 |
.8259 中断向量 .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) /图形 (secondary) (secondary) (primary) (primary) 硬磁盘 软磁盘 并行打印机 |
.BIOS 中断 .BIOS中断 | ||
40-43 44-47 48-4B 4C-4F 50-53 54-57 58-5B 5C-5F 60-63 64-67 | 10 11 12 13 14 15 16 17 18 19 | 屏幕显示 设备检验 测定存储器容量 I/O I/O I/O I/O I/O 键盘输入 I/O 键盘输入 入口代码 引导装入程序 日时钟 入口代码 引导装入程序 日时钟 入口代码 引导装入程序 日时钟 |
. 提供给用户的中断 .提供给用户的中断 | ||
6C-6F 70-73 | 1B 1C | 控制的软中断 定时器控制的软中断 控制的软中断 定时器控制的软中断 |
. 数据表指针 .数据表指针 | ||
74-77 78-7B 7C-7F | 1D 1E 1F | 显示器参量表 软盘参数表 图形表 |
.DOS 中断 .DOS中断 | ||
80-83 84-87 88-8B 8C-8F | 20 21 22 23 | 系统功能调用 Ctrl-Break退出 Ctrl-Break退出 |
90-93 94-97 98-9B 9C-9F A0-BB BC-BF BC-BF C0-FF C0-FF | 24 25 2F 30-3F | 严重错误处理 绝对磁盘读功能 绝对磁盘写 DOS保留 DOS保留 |
七.BASIC中断 | ||
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 | 清除报警 |