DOS功能调用
功能号在AH中,并设好其余的入口参数,向DOS发出INT21H命令,最后获得出口参数。
调用号 |
功能 |
入口参数 |
出口参数 |
00H |
程序终止 |
CS=PSP段地址 |
|
01H |
键盘输入字符 |
|
AL=输入的字符 |
02H |
显示输出 |
DL=显示的字符 |
|
03H |
串行设备输入 |
|
AL=输入的字符 |
04H |
串行设备输出 |
DL=输出的字符 |
|
05H |
打印输出 |
DL=输出的字符 |
|
06H |
直接控制台I/O
|
DL=0FFH(输入请求) DL=字符(输出请求) |
AL=输入的字符
|
07H |
直接控制台I/O (不显示输入) |
|
AL=输入的字符
|
08H |
键盘输入字符(无回显) |
|
AL=输入的字符 |
09H |
显示字符串 |
DS:DX=缓冲区首址 |
|
0AH |
输入字符串 |
DS:DX=缓冲区首址 |
|
0BH |
检查标准输入状态
|
|
AL=00无按键 AL=0FFH有按键 |
0CH |
清除输入缓冲区并执行指定的标准输入功能 |
AL=功能号 (01/06/07/08/0AH) DS:DX=缓冲区(0AH功能) |
AL=输入的数据 (功能01/06/07/08) |
0DH |
初始化磁盘状态 |
|
|
0EH |
选择缺省的驱动器 |
DL=驱动器号(0=A,1=B..) |
AL=逻辑驱动器数 |
0FH |
打开文件 |
DS:DX=未打开的FCB首址 |
AL=00成功,0FFH失败 |
10H |
关闭文件 |
DS:DX=打开的FCB首址 |
AL=00成功,0FFH失败 |
11H |
查找第一匹配目录 |
DS:DX=未打开的FCB首址 |
AL=00成功,0FFH失败 |
12H |
查找下一匹配目录 |
DS:DX=未打开的FCB首址 |
AL=00成功,0FFH失败 |
13H |
删除文件 |
DS:DX=未打开的FCB首址 |
AL=00成功,0FFH失败 |
14H
|
顺序读
|
DS:DX=打开的FCB首址
|
AL=00成功,01文件结束 02缓冲区太小 03缓冲区不满 |
15H |
顺序写 |
DS:DX=打开的FCB首址 |
AL=00成功,01盘满 02缓冲区太小 |
16H |
创建文件 |
DS:DX=未打开的FCB首址 |
AL=00成功 0FFH目录区满 |
17H |
文件换名 |
DS:DX=被修改的FCB首址 |
AL=00成功,0FFH未找 到目录项或文件重名 |
*18H |
保留未用 |
|
|
19H |
取缺省驱动器号 |
|
AL=驱动器号(0=A,1=B..) |
1AH |
设置磁盘缓冲区DTA |
DS:DX=磁盘缓冲区首址 |
|
*1BH |
取缺省驱动器的磁盘格 式信息
|
|
AL=每簇的扇区数 CX=每扇区的字节数 DX=数据区总簇数-1 DS:BX=介质描述字节 |
*1CH |
取指定驱动器的磁盘格 式信息 |
DL=驱动器号(0=缺省, 1=A..) |
AL=每簇的扇区数 CX=每扇区的字节数 DX=数据区总簇数-1 DS:BX=介质描述字节 |
*1DH |
保留未用 |
|
|
*1EH |
保留未用 |
|
|
*1FH |
取缺省驱动器的DPB |
|
DS:BX=DPB首址 |
*20H |
保留未用 |
|
|
21H
|
随机读一个记录
|
DS:DX=打开的FCB首址
|
AL=00成功,01文件结束 02缓冲区太小 03缓冲区不满 |
22H
|
随机写一个记录
|
DS:DX=打开的FCB首址
|
AL=00成功,01盘满 02缓冲区太小 |
23H |
取文件大小 |
DS:DX=未打开的FCB首址 |
AL=00成功,0FFH失败 |
24H |
设置随机记录号 |
DS:DX=打开的FCB首址 |
|
25H |
设置中断向量 |
AL=中断号 DS:DX=中断程序入口 |
|
*26H |
创建新的PSP |
DS:DX=新的PSP段地址 |
|
27H
|
随机读若干记录
|
DS:DX=打开的FCB首址 CX=要读入的记录数
|
AL=00成功,01文件结束 AL=02缓冲区太小 AL=03缓冲区不满 CX=读入的块数 |
28H
|
随机写若干记录
|
DS:DX=打开的FCB首址 CX=要写入的记录数
|
AL=00成功,01盘满 AL=02缓冲区太小 AL=03缓冲区不满 CX=已写的块数 |
29H
|
分析文件名
|
AL=分析控制标记 DS:SI=要分析的字符串 ES:DI=未打开的FCB首址
|
AL=00未通配符 01有通配符 0FFH驱动器字母无效 ES:DI=未打开的FCB |
2AH
|
取系统日期
|
|
CX=年(1980-2099) DH=月,DL=日,AL=星期 (0=星期日) |
2BH |
置系统日期 |
CX=年,DH=月,DL=日 |
AL=00成功,0FFH失败 |
2CH
|
取系统时间
|
|
CH=时(0-23),CL=分,DH= 秒,DL=百分之几秒 |
2DH |
置系统时间 |
CX=时,分DX=秒,百分秒 |
AL=00成功,0FFH失败 |
2EH |
设置/复位校验开关 |
AL=0关闭,1打开 |
|
2FH |
取磁盘传输地址DTA |
|
ES:BX=DTA首地址 |
30H |
取DOS版本 |
|
AL,AH=DOS主、次版本 |
31H |
结束并驻留 |
AL=返回码,DX=内存大小 |
|
*32H |
取指定驱动器的DPB |
|
DS:BX=DPB首址 |
33H |
取或置Ctrl-Break标志 |
AL=0:取,1:置,DL=标志 |
DL=标志(取功能)0:关 1:开 |
*34H |
取DOS中断标志 |
|
ES:BX=DOS中断标志 |
35H |
取中断向量地址 |
AL=中断号 |
ES:BX=中断程序入口 |
36H |
取磁盘的自由空间 |
DL=驱动器号(0=缺省,1=A |
AX=FF驱动器无效 其它每簇扇区数 BX=自由簇数 CX=每扇区字节数 BX=文件区所占簇数 |
*37H |
取/置参数分隔符 取/置设备名许可标记 |
AL=0:取分隔符,1:置分隔 符,DL=分隔符 2:取许可标记 3:置许可标记,DL=许 可标记 |
DL=分隔符(功能0) DL=许可标记(功能2) |
38H |
取国家信息 |
AL=0,DS:DX=缓冲区首址 |
|
39H |
创建子目录 |
DS:DX=路径字符串 |
CF=0成功,1失败,AX=错 误码 |
3AH |
删除子目录 |
DS:DX=路径字符串 |
CF=0成功,1失败,AX=错 误码 |
3BH |
设置子目录 |
DS:DX=路径字符串 |
CF=0成功,1失败,AX=错 误码 |
3CH |
创建文件 |
DS:DX=带路径的文件名 CX=属性1-只读2-隐蔽 4-系统 |
CF=0成功,AX=文件号 CF=1失败,AX=错误码 |
3DH |
打开文件 |
DS:DX=带路径的文件名 AL=方式0-读1-写2-读 写 |
CF=0成功,AX=文件号 CF=1失败,AX=错误码 |
3EH |
关闭文件 |
BX=文件号 |
CF=0成功 CF=1失败,AX=错误码 |
3FH |
读文件或设备 |
BX=文件号 CX=字节数 |
CF=0成功 DX:AX=新的指针位置 |
40H |
写文件或设备 |
DS:DX=缓冲区首址 |
CF=1失败,AX=错误码 |
41H |
删除文件 |
DS:DX=带路径的文件名 |
CF=0成功,1失败,AX=错 误码 |
42H |
移动文件指针 |
AL=方式0-正向1-相对 2-反向 BX=文件号,CX:DX=移动的 位移量 |
CF=0成功,DX:AX=新的文 件指针 CF=1失败,AX=错误码 |
43H |
取/置文件属性 |
AL=0:取1:置,CX=新属性 DS:DX=带路径的文件名 |
CX=属性(功能0)1-只读 2-隐蔽4-系统20H-归档 |
44H
|
设备输入/输出控制: 设置/取得与打开设备 的句柄相关联信息,或 发送/接收控制字符串 至设备句柄
|
AL=0/1取/置设备信息 2/3读/写设备控制通道 4/5同功能2/3 6/7取输入/输出状态 BX=句柄(功能0-3,6-7) BL=驱动器号(功能4-5) CX=字节数(功能2-5) DS:DX=缓冲区(功能2-5) |
CF=0成功 DX=设备信息(功能0) AL=状态(功能6/7) 0未准备,1准备 AX=传送的字节数(功能2- 5)
|
45H
|
复制文件号(对于一个 打开的文件返回一个新 的文件号) |
BX=文件号
|
CF=0成功,AX=新文件号 CF=1失败,AX=错误码
|
46H
|
强行复制文件号
|
BX=现存的文件号,CX=第2 文件号 |
CF=0成功,1失败 AX=错误码 |
47H
|
取当前目录
|
DL=驱动器号 DS:SI=缓冲区首址 |
CF=0成功,1失败 AX=错误码 |
48H
|
分配内存
|
BX=所需的内存节数
|
CF=0成功,AX=分配的段 数,CF=1失败,AX=错误码 BX=最大可用块大小 |
49H |
释放内存 |
ES=释放块的段值 |
CF=1失败,AX=错误码 |
4AH
|
修改分配内存
|
ES=修改块的段值 BX=新长度(以节为单位) |
CF=1失败,AX=错误码 BX=最大可用块大小 |
4BH
|
装载程序 运行程序
|
AL=0装载并运行 1获得执行信息 3装载但不运行 DS:DX=带路径的文件名 ES:BX=装载用的参数块 |
CF=1失败,AX=错误码
|
4CH |
带返回码的结束 |
AL=进程返回码 |
|
4DH
|
取由31H/4CH带回的返 回码
|
|
AL=进程返回码 AH=类型码,0-正常结束 1-由Ctrl-Break结束 2-由严重设备错误而结束 3-由调用31H而结束 |
4EH
|
查找第一个匹配项
|
DS:DX=带路径的文件名 CX=属性 |
CF=1失败,AX=错误码
|
4FH |
查找下一个匹配项 |
|
CF=1失败,AX=错误码 |
*50H
|
建立当前的PSP段地址
|
BX=PSP段地址
|
|
*51H |
读当前的PSP段地址 |
|
BX=PSP段地址 |
*52H |
取DOS系统数据区首址 |
|
ES:BX=DOS数据区首址 |
*53H |
为块设备建立DPB |
DS:SI=BPB,ES:DI=DPB |
|
54H |
取校验开关设定值 |
|
AL=标志值(0:关,1:开) |
*55H |
由当前PSP建立新PSP |
DX=PSP段地址 |
|
56H
|
文件换名
|
DS:DX=带路径的旧文件名 ES:DI=带路径的新文件名 |
CF=1失败,AX=错误码
|
57H
|
取/置文件时间及日期
|
AL=0/1取/置,BX=文件号 CX=时间,DX=日期 |
CF=0成功,CX=时间,DX= 日期 |
CF=1失败,AX=错误码
错误码 |
错误类型 |
错误码 |
错误类型 |
01H |
无效的功能号 |
0AH |
不正确的环境 |
02H |
文件未找到 |
0BH |
不正确的格式 |
03H |
路径未找到 |
0CH |
无效的存取代码 |
04H |
打开的文件太多 |
0DH |
无效的数据 |
05H |
拒绝存取 |
0EH |
保留 |
06H |
非法的文件号 |
0FH |
指定的驱动器无效 |
07H |
内存控制块破坏 |
10H |
试图删除当前目录 |
08H |
没有足够的内存空间 |
11H |
非同一设备 |
09H |
无效的内存块地址 |
12H |
没有更多的文件 |
|
|
|
Unix系统中文件管理和文件权限设置教程汇总
[Unix]2017年1月22日WindowsVista系统开机加速全攻略汇总
[Vista]2016年12月2日windowsserver2003复习试题汇总
[2003]2016年12月2日Windows服务器技术SQLServer辅导资料汇总
[Win 综合]2016年12月2日Windows服务器技术FTP服务器辅导资料汇总
[Win 综合]2016年12月2日