DOS功能调用表

功能号在AH中,并设好其余的入口参数,向DOS发出INT21H命令,最后获得出口参数。

调用号功能入口参数出口参数
00H程序终止CS=PSP段地址
01H键盘输入字符AL=输入的字符
02H显示输出DL=显示的字符
03H串行设备输入AL=输入的字符
04H串行设备输出DL=输出的字符
05H打印输出DL=输出的字符
06H直接控制台I/ODL=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设置磁盘缓冲区DTADS:DX=磁盘缓冲区首址
*1BH取缺省驱动器的磁盘格 式信息AL=每簇的扇区数 CX=每扇区的字节数 DX=数据区总簇数-1 DS:BX=介质描述字节
*1CH取指定驱动器的磁盘格 式信息DL=驱动器号(0=缺省, 1=A…)AL=每簇的扇区数 CX=每扇区的字节数 DX=数据区总簇数-1 DS:BX=介质描述字节
*1DH保留未用
*1EH保留未用
*1FH取缺省驱动器的DPBDS: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创建新的PSPDS: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取磁盘传输地址DTAES:BX=DTA首地址
30H取DOS版本AL,AH=DOS主、次版本
31H结束并驻留AL=返回码,DX=内存大小
*32H取指定驱动器的DPBDS: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=AAX=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为块设备建立DPBDS:SI=BPB,ES:DI=DPB
54H取校验开关设定值AL=标志值(0:关,1:开)
*55H由当前PSP建立新PSPDX=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没有更多的文件
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值