功能号在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 | 没有更多的文件 |