常用DOS功能调用与BIOS调用.doc
文本预览下载声明
常用DOS功能调用(INT 21H)一览表
AH
功能
调用参数
返回参数
00
程序终止(同INT 20H)
CS=程序段前缀
01
键盘输入并回显
AL=输入字符
02
显示输出
DL=输出字符
03
异步通迅输入
AL=输入数据
04
异步通迅输出
DL=输出数据
05
打印机输出
DL=输出字符
06
直接控制台I/O
DL=FF(输入)DL=字符(输出)
AL=输入字符
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=驱动器号 0=A,1=B,...
AL=驱动器数
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 盘满=02 DTA空间不够
16
建文件
DS:DX=FCB首地址
AL=00 建立成功=FF 无磁盘空间
17
文件改名
DS:DX=FCB首地址(DS:DX+1)=旧文件名(DS:DX+17)=新文件名
AL=00 成功AL=FF 未成功
19
取当前缺省磁盘驱动器
AL=缺省的驱动器号 0=A,1=B,2=C,...
1A
置DTA地址
DS:DX=DTA地址
1B
取缺省驱动器FAT信息
AL=每簇的扇区数DS:BX=FAT标识字节CX=物理扇区大小DX=缺省驱动器的簇数
1C
取任一驱动器FAT信息
DL=驱动器号
同上
21
随机读
DS:DX=FCB首地址
AL=00 读成功=01 文件结束=02 缓冲区溢出=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 缓冲区不满
28
随机分块写
DS:DX=FCB首地址CX=记录数
AL=00 写成功=01 盘满=02 缓冲区溢出
29
分析文件名
ES:DI=FCB首地址DS:SI=ASCIIZ串AL=控制分析标志
AL=00 标准文件=01 多义文件=02 非法盘符
2A
取日期
CX=年DH:DL=月:日(二进制)
2B
设置日期
CX:DH:DL=年:月:日
AL=00 成功=FF 无效
2C
取时间
CH:CL=时:分DH:DL=秒:1/100秒
2D
设置时间
CH:CL=时:分DH:DL=秒:1/100秒
AL=00 成功=FF 无效
2E
置磁盘自动读写标志
AL=00 关闭标志AL=01 打开标志
2F
取磁盘缓冲区的首址
ES:BX=缓冲区首址
30
取DOS版本号
AH=发行号,AL=版本
31
结束并驻留
AL=返回码DX=驻留区大小
33
Ctrl-Break检测
AL=00 取状态=01 置状态(DL)DL=00 关闭检测=01 打开检测
DL=00 关闭Ctrl-Break检测=01 打开Ctrl-Break检测
35
取中断向量
AL=中断类型
ES:BX=中断向量
36
取空闲磁盘空间
DL=驱动器号 0=缺省,1=
显示全部