DOS功能调用大全.docx
《DOS功能调用大全.docx》由会员分享,可在线阅读,更多相关《DOS功能调用大全.docx(12页珍藏版)》请在冰豆网上搜索。
![DOS功能调用大全.docx](https://file1.bdocx.com/fileroot1/2022-12/31/6f7a73b9-ab87-47ef-92be-d8c01350bb52/6f7a73b9-ab87-47ef-92be-d8c01350bb521.gif)
DOS功能调用大全
一、21H号中断类型(INT21H)的各功能详解。
00H号功能——程序终止
入口参数:
AH=0;功能号
CS已指定
返回值:
无。
01H号功能——键盘输入并回显。
[检测break(Ctrl+C)]
入口参数:
AH=01H;功能号
返回值:
AL=输入的字符。
02H号功能——显示输出。
[检测break(Ctrl+C)]
入口参数:
AH=02H;功能号
DL=要显示的字符
返回:
光标移动。
03H号功能——异步通讯输入。
入口参数:
AH=03H;功能号
返回值:
AL=输入的数值
04H号功能——异步通讯输出。
入口参数:
AH=04H;功能号
DL=要输出的数值
返回值:
无
05H号功能——打印机输出。
[自动检测打印机]
入口参数:
AH=05H;功能号
DL=要输出的数值
返回值:
无
06H号功能——直接控制台I/O(输入/输出)。
[[不检测break(Ctrl+C)]]
入口参数1:
AH=06H;功能号
DL=要输出的字符(DL<0FFH)
功能1:
输出
返回1:
光标移动
入口参数2:
AH=06H;功能号
DL=0FFH
功能2:
输入
返回2:
AL=输入的字符
07H号功能——键盘输入但不回显。
入口参数:
AH=07H;功能号
返回值:
AL=输入的字符。
08H号功能——键盘输入但不回显。
[检测break(Ctrl+C)]
入口参数:
AH=08H;功能号
返回值:
AL=输入的字符。
说明:
如果返回AL=0,则是扩展ASC码,要再次调用才能取得扩展ASC码。
例:
movah,8
int21h
cmpal,0
jnz-----是ASC码,去处理ASC码。
movah,8
int21h ;这次AL返回扩展ASC码。
09H号功能——显示字符串。
入口参数:
AH=09H;功能号
DS:
DX=串地址。
串必须以'$'字符结尾。
返回:
光标移动。
0AH号功能——键盘输入字串到缓冲区。
入口参数:
AH=0AH;功能号
DS:
DX=缓冲区地址。
缓冲区首字节=缓冲区字节数。
返回:
缓冲区第二字节单元中的值为实际输入的字符数。
例子:
如果要输入的最多字符个数为10,则缓冲区的结构如下:
db12 ;缓冲区长度(调用前设置)
db?
;实际输入的字符数(由INT21H功能自动设置)
db10dup(?
);输入的字符保存在这里
0BH号功能——检测键盘状态。
入口参数:
AH=0BH;功能号
返回:
AL=0:
表示有输入;
AL=0FFH:
表示没有输入。
0CH号功能——清除键盘输入缓冲区,并请求指定的输入功能。
入口参数:
AH=0CH;功能号
AL=输入功能号(即上述功能号:
01H,06H,07H,08H,0AH)
DS:
DX=缓冲区地址(如果不请求0AH号功能,则本参数省略)。
缓冲区首字节=缓冲区字节数。
返回:
与请求的功能返回相同。
0DH号功能——磁盘复位。
入口参数:
AH=0DH;功能号
返回:
清除磁盘缓冲区。
0EH号功能——指定当前缺省的磁盘驱动器。
入口参数:
AH=0EH;功能号
DL=驱动器编号(0=驱动器A;1=驱动器B;......)
返回:
AL=驱动器数。
0FH号功能——打开文件。
入口参数:
AH=0FH;功能号
DS:
DX=FCB(文件控制块)首址
返回:
AL=0:
成功;
AL=0FFH:
失败。
10H号功能——关闭文件。
入口参数:
AH=10H;功能号
DS:
DX=FCB(文件控制块)首址
返回:
AL=0:
成功;
AL=0FFH:
失败。
11H号功能——查找首个目录。
入口参数:
AH=11H;功能号
DS:
DX=FCB(文件控制块)首址
返回:
AL=0:
成功;
AL=0FFH:
失败。
12H号功能——查找下一个目录。
入口参数:
AH=12H;功能号
DS:
DX=FCB(文件控制块)首址
返回:
AL=0:
成功;
AL=0FFH:
失败。
13H号功能——删除文件。
入口参数:
AH=13H;功能号
DS:
DX=FCB(文件控制块)首址
返回:
AL=0:
成功;
AL=0FFH:
失败。
14H号功能——顺序读文件。
入口参数:
AH=14H;功能号
DS:
DX=FCB(文件控制块)首址
返回:
AL=0:
成功;
AL=1:
文件结束,无可读数据;
AL=2:
DTA(数据传输区)空间不够;
AL=3:
文件结束,记录不完整。
15H号功能——顺序写文件。
入口参数:
AH=15H;功能号
DS:
DX=FCB(文件控制块)首址
返回:
AL=0:
成功;
AL=1:
磁盘满;
AL=2:
DTA(数据传输区)空间不够。
16H号功能——新建文件。
入口参数:
AH=16H;功能号
DS:
DX=FCB(文件控制块)首址
返回:
AL=0:
成功;
AL=0FFH:
无磁盘空间。
17H号功能——文件改名。
入口参数:
AH=17H;功能号
DS:
DX=FCB(文件控制块)首址
(DS:
DX+1)=旧文件名
(DS:
DX+17)=新文件名
返回:
AL=0:
成功;
AL=0FFH:
失败。
19H号功能——取当前缺省驱动器名。
入口参数:
AH=19H;功能号
返回:
AL=缺省驱动器编号(0=驱动器A;1=驱动器B;......)
1AH号功能——设置DTA(数据传输区)地址。
入口参数:
AH=1AH;功能号
DS:
DX=DTA地址
返回:
无
1BH号功能——取缺省驱动器FAT信息。
入口参数:
AH=1BH;功能号
返回:
AL=每簇的扇区数;
DS:
BX=指向FAT标识字节;
CX=物理扇区的大小;
DX=簇数。
1CH号功能——取指定驱动器FAT信息。
入口参数:
AH=1BH;功能号
DL=驱动器编号(0=驱动器A;1=驱动器B;......)
返回:
AL=每簇的扇区数;
DS:
BX=指向FAT标识字节;
CX=物理扇区的大小;
DX=簇数。
21H号功能——随机读文件。
入口参数:
AH=21H;功能号
DS:
DX=FCB(文件控制块)首址
返回:
AL=0:
成功;
AL=1:
文件结束,无可读数据;
AL=2:
DTA(数据传输区)空间不够;
AL=3:
文件结束,记录不完整。
22H号功能——随机写文件。
入口参数:
AH=22H;功能号
DS:
DX=FCB(文件控制块)首址
返回:
AL=0:
成功;
AL=1:
磁盘满;
AL=2:
DTA(数据传输区)空间不够。
23H号功能——测定文件大小。
入口参数:
AH=23H;功能号
DS:
DX=FCB(文件控制块)首址
返回:
AL=0:
成功,文件长度填入FCB;
AL=0FFH:
失败。
24H号功能——设置随机记录号。
入口参数:
AH=24H;功能号
DS:
DX=FCB(文件控制块)首址
返回:
25H号功能——设置中断向量。
入口参数:
AH=25H;功能号
DS:
DX=中断向量
AL=中断类型号
返回:
无
26H号功能——建立程序段前缀。
入口参数:
AH=26H;功能号
DX=新的程序段前缀
返回:
无
27H号功能——随机分块读文件。
入口参数:
AH=27H;功能号
DS:
DX=FCB(文件控制块)首址
CX=记录数
返回:
AL=0:
成功;
AL=1:
文件结束,无可读数据;
AL=2:
DTA(数据传输区)空间不够;
AL=3:
文件结束,记录不完整。
28H号功能——随机分块写文件。
入口参数:
AH=28H;功能号
DS:
DX=FCB(文件控制块)首址
CX=记录数
返回:
AL=0:
成功;
AL=1:
文件结束,无可读数据;
AL=2:
DTA(数据传输区)空间不够。
29H号功能——分析文件名。
入口参数:
AH=29H;功能号
ES:
DI=FCB(文件控制块)首址
DS:
SI=ASCIIZ串
AL=控制块分析标志
返回:
AL=0:
标准文件;
AL=1:
多义文件;
AL=0FFH:
非法盘符。
2AH号功能——取计算机当前日期。
入口参数:
AH=2AH;功能号
返回:
CX=年份;
DH=月份
DL=日期
AL=星期(0—6:
分别对应星期日、星期一、......)。
2BH号功能——设置计算机日期。
入口参数:
AH=2BH;功能号
CX=年份;
DH=月份
DL=日期
返回:
AL=0:
成功;
AL=0FFH:
无效。
2CH号功能——取计算机当前时间。
入口参数:
AH=2CH;功能号
返回:
CH=时;
CL=分;
DH=秒;
DL=1/100秒。
2DH号功能——设置计算机时间。
入口参数:
AH=2DH;功能号
CH=时;
CL=分;
DH=秒;
DL=1/100秒。
返回:
AL=0:
成功;
AL=0FFH:
无效。
2EH号功能——设置磁盘自动读写标志。
入口参数:
AH=2EH;功能号
AL=0为关闭;AL=1为打开
返回:
2FH号功能——取磁盘缓冲区(DTA)地址。
入口参数:
AH=2FH;功能号
返回:
ES:
BX=缓冲区地址。
注意:
该地址是用1AH号功能设置的。
30H号功能——取DOS版本号。
入口参数:
AH=30H;功能号
返回:
AH=发行号;
AL=版号。
31H号功能——程序结束并驻留。
入口参数:
AH=31H;功能号
AL=返回码;
DX=驻留区大小(从PSP开始计算)
返回:
AH=发行号;
AL=版号。
33H号功能——Ctrl-Break检测。
入口参数:
AH=33H;功能号
AL=0为取状态值;AL=1为置状态值;
DL=0为关闭检测;DL=1为打开检测。
返回:
DL=0:
关闭Ctrl-Break检测;
DL=1:
打开Ctrl-Break检测。
35H号功能——取中断向量。
入口参数:
AH=35H;功能号
AL=中断类型
DL=0为关闭检测;DL=1为打开检测。
返回:
DL=0:
关闭Ctrl-Break检测;
DL=1:
打开Ctrl-Break检测。
36H号功能——取空闲磁盘空间。
入口参数:
AH=36H;功能号
DL=驱动器号(0=缺省驱动器,1=A,2=B,...)
返回:
AX=0FFFFH时为失败,否则为成功。
成功时:
AX=每簇扇区数;
BX=有效簇数;
CX=每扇区字节数;
DX=总簇数。
38H号功能——取或置国家信息。
入口参数:
AH=38H;功能号
DS:
DX=信息区地址
返回:
BX=国家码(国际电话前缀码)
AX=错误码。
39H号功能——建立子目录(MKDIR)。
入口参数:
AH=39H;功能号
DS:
DX=ASCIIZ串地址
返回:
AX=错误码。
3AH号功能——删除子目录(RMDIR)。
入口参数:
AH=3AH;功能号
DS:
DX=ASCIIZ串地址
返回:
AX=错误码。
3BH号功能——改变当前目录。
入口参数:
AH=3BH;功能号
DS:
DX=ASCIIZ串地址
返回:
AX=错误码。
3CH号功能——建立文件。
入口参数:
AH=3CH;功能号
DS:
DX=ASCIIZ串地址
CX=文件属性(CX=0为普通文件)
返回:
CF=0:
成功,AX=文件代号;
CF=1:
失败,AX=错误码。
3DH号功能——打开文件。
入口参数:
AH=3DH;功能号
DS:
DX=ASCIIZ串地址
AL=0:
以只读方式打开
AL=1:
以只写方式打开
AL=2:
可读/写
返回:
CF=0:
成功,AX=文件代号;
CF=1:
失败,AX=错误码。
3EH号功能——关闭文件。
入口参数:
AH=3EH;功能号
BX=文件代号(3CH、3DH功能返回的文件代号)
返回:
CF=0:
成功;
CF=1:
失败,AX=错误码。
3FH号功能——读文件或设备。
入口参数:
AH=3FH;功能号
DS:
DX=数据缓冲区地址
BX=文件代号(3CH、3DH功能返回的文件代号)
CX=要读取的字节数
返回:
CF=0:
成功,AX=实际读入的字节数;
CF=1:
失败,AX=错误码。
40H号功能——写文件或设备。
入口参数:
AH=40H;功能号
DS:
DX=数据缓冲区地址
BX=文件代号(3CH、3DH功能返回的文件代号)
CX=要写入的字节数
返回:
CF=0:
成功,AX=实际写入的字节数;
CF=1:
失败,AX=错误码。
41H号功能——删除文件。
入口参数:
AH=41H;功能号
DS:
DX=ASCIIZ串地址
返回:
CF=0:
成功,AX=0;
CF=1:
失败,AX=错误码(2、5)。
42H号功能——移动文件指针。
入口参数:
AH=42H;功能号
BX=文件代号(3CH、3DH功能返回的文件代号)
CX=移动字节数的高16位值
DX=移动字节数的低16位值
AL=移动方式:
AL=0:
绝对位置(即从文件首开始)
AL=1:
相对位置(即从当前文件指针开始)
AL=2:
绝对倒移(即从文件尾开始)
注:
DXCX移动量为补码形式(即符号数)。
返回:
CF=0:
成功,DXAX=新的文件指针位置;
CF=1:
失败,AX=错误码。
43H号功能——取或置文件属性。
入口参数:
AH=43H;功能号
DS:
DX=ASCIIZ串地址
AL=0为取文件属性
AL=1为置文件属性,CX=文件属性。
返回:
CF=0:
成功,CX=文件属性;
CF=1:
失败,AX=错误码。
44H号功能——设备文件I/O控制。
入口参数:
AH=44H;功能号
BX=文件代码;
AL=0为取状态;
AL=1为置状态,DX=状态信息;
AL=2为读数据;
AL=3为写数据;
AL=6为取输入状态;
AL=7为取输出状态。
返回:
DX=设备信息。
45H号功能——复制文件。
入口参数:
AH=45H;功能号
BX=文件代号1(3CH、3DH功能返回的文件代号)
返回:
CF=0:
成功,AX=文件代码2;
CF=1:
失败,AX=错误码。
46H号功能——人工复制文件代号。
入口参数:
AH=46H;功能号
BX=文件代号1
CX=文件代号2
返回:
CF=1:
失败,AX=错误码。
47H号功能——取当前目录路径名。
入口参数:
AH=47H;功能号
DL=驱动器号(0=缺省驱动器,1=A,2=B,...)
DS:
SI=接收缓冲区地址
返回:
CF=1:
失败,AX=错误码。
CF=0:
成功,ASCIIZ串存入接收缓冲区。
48H号功能——分配内存空间。
入口参数:
AH=48H;功能号
BX=申请内存容量
返回:
CF=0:
成功,AX=分配的内存首地址;
CF=1:
失败,AX=错误码,BX=最大可用空间。
49H号功能——释放内存空间。
入口参数:
AH=49H;功能号
ES=内存起始段址
返回:
CF=1:
失败,AX=错误码。
CF=0:
成功。
4AH号功能——调整已分配的内存空间。
入口参数:
AH=4AH;功能号
ES=原内存起始段址
BX=再申请的容量
返回:
CF=0:
成功,AX=分配的内存首地址;
CF=1:
失败,AX=错误码,BX=最大可用空间。
4BH号功能——装载/执行程序。
入口参数:
AH=4BH;功能号
DS:
DX=程序名ASCIIZ串地址
ES:
BX=参数区地址
AL=0:
装入并运行
AL=3:
装入不运行
返回:
CF=0:
成功;
CF=1:
失败,AX=错误码。
4CH号功能——带返回码结束程序。
入口参数:
AH=4CH;功能号
AL=返回码
4DH号功能——取子进程的返回码。
入口参数:
AH=4DH;功能号
返回:
AX=返回码。
4EH号功能——查找第一个匹配文件。
入口参数:
AH=4EH;功能号
DS:
DX=文件名ASCIIZ串地址
CX=文件属性(CX=0:
普通文件)
返回:
CF=1:
失败,AX=错误码(2、18)。
4FH号功能——查找下一个匹配文件。
入口参数:
AH=4FH;功能号
DS:
DX=文件名ASCIIZ串地址
返回:
CF=1:
失败,AX=错误码(18)。
54H号功能——取盘的自动读写标志。
入口参数:
AH=54H;功能号
返回:
AL=当前标志值。
56H号功能——修改文件名。
入口参数:
AH=56H;功能号
DS:
DX=原文件名ASCIIZ串地址
ES:
DI=新文件名ASCIIZ串地址
返回:
CF=1:
失败,AX=错误码(3、5、17)。
注意:
如果新文件名已经存在,则不会删除。
57H号功能——置/取文件日期时间。
入口参数:
AH=57H;功能号
BX=文件代号;