中断命令格式:Int 类型码
类型码n=05H~1FH时,调用BIOS的中断处理程序;类型码n=20H~3FH时,调用DOS的中断处理程序
Dos软中断功能及参数
中断号 |
功能 |
入口参数 |
出口参数 |
INT 20h |
程序正常退出 |
|
|
INT 21h |
系统功能调用 |
详见下面INT 21H dos 功能调用 |
|
INT 22h |
结束退出 |
|
|
INT 23h |
Ctrl+break 中断退出 |
|
|
INT 24h |
出错退出 |
|
|
INT 25h |
驻留退出 |
|
|
INT 26h |
读盘 |
CX=读入扇区,DX为起始逻辑扇区,DS:BX是存放读出数据的缓冲区地址,AL=盘号 |
CF=1出错 |
INT 27h |
写盘 |
CX=写入扇区,DX为起始逻辑扇区,DS:BX是存放读出数据的缓冲区地址,AL=盘号 |
CF=1出错 |
汇编--int 21H DOS功能调用
编号 |
功能 |
入口参数 |
出口参数 |
0 |
程序终止 |
CS=PSP段地址 |
|
1 |
带回显的字符输入 |
|
AL=8位数据 |
2 |
字符输出 |
DL=8位数据 |
|
3 |
辅助设备输入 |
|
AL=8位数据 |
4 |
辅助设备输出 |
DL=8位数据 |
|
5 |
打印输出 |
DL=8位数据 |
|
6 |
直接控制台I/O |
DL=0FFH(输入请求) DL=0-OFEH(输出请求) |
AL=8位数据 |
7 |
无回显过滤的字符输入 |
|
AL=8位数据 |
8 |
无回显的字符的输入 |
|
AL=8位数据 |
9 |
显示字符串 |
DS:DX=字符串 |
|
OAH |
缓冲输入 |
DS:DX=缓冲区段:位移 |
|
OBH |
取输入状态 |
|
AL=0(无字符) AL=1(有字符) |
OCH |
重置输入缓冲区后输入 |
AL=功能号(1/6/7/8/OAH) DS:DX=缓冲区(功能OAH) |
AL=8位数据 (功能1/6/7/8) |
ODH |
重启动磁盘 |
|
|
OEH |
置缺省盘驱动器 |
DL=驱动器码(0=A,1=B) |
AL=总的驱动器数 |
OFH |
打开文件 |
DS:DX=FCB |
AL=0:成功,-1:失败 |
10H |
关闭文件 |
DS:DX=FCB |
AL=0:成功,-1:失败 |
11H |
查找第一匹配目录 |
DS:DX=FCB |
AL=0:成功,-1:失败 |
12H |
查找下一匹配目录 |
DS:DX=FCB |
AL=0:成功,-1:失败 |
13H |
删除文件 |
DS:DX=FCB |
AL=0:成功,-1:失败 |
14H |
顺序读 |
DS:DX=FCB |
AL=返回码 |
15H |
顺序写 |
DS:DX=FCB |
AL=返回码 |
16H |
创建文件 |
DS:DX=FCB |
AL=0:成功,-1:失败 |
17H |
重命名文件 |
DS:DX=FCB |
AL=0:成功,-1:失败 |
18H |
保留未用 |
|
|
19H |
取缺省盘驱动器 |
|
AL=驱动器码(0=A) |
1AH |
设置DTA |
DS:DX=DTA |
|
1BH |
取缺省驱动器的分配信息 |
|
AL=每簇的扇区数 CX=每扇区的字节数 |
1CH |
取指定驱动器的分配信息 |
DL=驱动器码(0=缺省…) |
同上 |
1DH |
保留未用 |
|
|
1EH |
保留未用 |
|
|
1FH |
取缺省驱动器的DPB |
|
DS:BX=DPB |
20F |
保留未用 |
|
|
21F |
随机读一个记录 |
DS:DX=FCB |
AL=返回码 |
22F |
随机写一个记录 |
DS:DX=FCB |
AL=返回码 |
23F |
取文件大小 |
DS:DX=未打开的FCB |
AL=0:成功,-1:失败 |
24F |
设置随机记录号 |
DS:DX=FCB |
|
25F |
置中断向量 |
AL=中断号,DS:DX=入口 |
|
26F |
创建程序段前缀 |
DX=新程序段的段地址 |
|
27H |
随机读若干记录 |
CX=记录数 DS:DX=FCB |
AL=返回码 CX=实际记录数 |
28H |
随机写若干记录 |
|
|
29H |
分析文件名 |
AL=控制分析标志 DS:SI=正文串段:位移 |
AL=分析结果 DS:SI=分析后的头一字符段的段:位移 |
2AH |
取系统日期 |
|
CX=年,AL=星期 DH=月,DL=日 |
2BH |
置系统日期 |
CX=年,DH=月,DL=日 |
AL=0:成功,-1:失败 |
2CH |
取系统时间 |
|
CH=时,CL=分 DH=秒,DL=百分秒 |
2DH |
置系统时间 |
CX=时和分,DX=秒,百分秒 |
AL=0:成功,-1:失败 |
2EH |
置确认标志 |
AL=0:关闭,1:打开 |
|
2FH |
取DTA |
|
AL,AH=主,次版本 |
30H |
取DOS版本号 |
|
AL=0:成功,-1失败 |
31H |
结束并驻留 |
AL=返回码,DX=内存大小 |
|
32H |
取指定驱动器的DPB |
DL=驱动器码(0=缺省…) |
DS:BX=DPB |
33H |
取或置Ctrl-Break标志 |
AL=0(取标志) AL=1(置标志),DL=标志 |
DL=标志状态(功能0) (0:关,1:开) |
34H |
取DOS中断标志 |
|
ES:BX=DOS中断标志 |
35H |
取中断向量 |
AL=中断号 |
ES:BX=中断程序入口 |
36H |
取磁盘的自由空间 |
DL=驱动器码(0=缺省…) |
驱动器无效:AX=-1 有效:AX=每簇扇区数 |
37H |
取或置命令行开关符, 取或置名字检查开关 |
AL=0(取开关符) AL=1(置开关符) |
DL=开关符(功能0) |
38H |
取国家信息 |
AL=0,DS:DX=缓冲区 |
|
39H |
创建子目录 |
DS:DX=路径说明串 |
注1 |
3AH |
删除子目录 |
DS:DX=路径说明串 |
注1 |
3BH |
设置当前目录 |
DS:DX=路径说明串 |
注1 |
3CH |
创建文件 |
DS:DX=文件说明,CX=属性 |
注2 |
3DH |
打开文件 |
DS:DX=文件说明,AL=模式 |
注2 |
3EH |
关闭文件 |
BX=文件号 |
注1 |
3FH |
读文件或设备 |
BX=文件号 CX=字符数 |
成功:CF=0,DX:AX=新指针位置 失败:CF=1,AX=错误码 |
40H |
写文件或设备 |
|
|
41H |
删除文件 |
DS:DX=文件说明串 |
注1 |
42H |
移文件指针 |
AL=方式 BX=文件号 |
成功:CF=0,DX:AX=新指针位置 失败:CF=1,AX=错误码 |
43H |
取或置文件属性 |
AL=0(取属性) AL=1,CX=新属性(置属性) |
CX=属性(功能0) |
44H |
设备驱动控制 |
AL=0(取设备信息) AL=1(置设备信息) |
失败:CF=1,AX=错误码 成功: |
45H |
复制文件号 |
BX=文件号 |
成功:CF=0 AX=新文件号 |
46H |
强迫复制文件号 |
BX=第1文件号 CX=第2文件号 |
注1 |
47H |
取当前目录 |
DL=驱动器码 DS:SI=缓冲区 |
注1 |
48H |
分配内存 |
BX=所需内存的节数 |
成功:CF=0 AX=分配块的段 |
49H |
释放内存 |
ES=释放块的段 |
注1 |
4AH |
修改内存分配 |
ES=修改块的段 BX=新长度(以节计) |
成功:CF=0 失败:CF=1,AX=错误码 |
4BH |
加载程序 执行程序 |
AL=0(加载并执行) AL=1(获得执行信息) |
注1 |
4CH |
带返回码结束 |
AL=返回码 |
|
4DH |
取返回码 |
|
AH=类型码,AL=返回码 |
4EH |
查找第一个匹配项 |
CX=属性,DS:DX=文件说明 |
注1 |
4FH |
查找下一个匹配项 |
|
注1 |
50H |
设置PSP段地址 |
BX=PSP段地址 |
|
51H |
取PSP段地址 |
|
BX=PSP段地址 |
52H |
取DOS系统数据块 |
|
ES:BX=DOS系统数据块 |
53H |
为块设备建立DPB |
DS:SI=BPB,ES:BP=DPB |
|
54H |
取确认标志 |
|
AL=标志值(0:关,1:开) |
55H |
创建PSP |
DX=PSP |
|
56H |
重命名文件 |
DS:DX=旧名,ES:DI=新名 |
注1 |
57H |
取或置文件日期和时间 |
AL=0,BX=文件号(取) AL=1,BX=文件号, |
成功:CF=0,CX=时间 DX=日期(取) |
58H |
取/置分配策略码 |
AL=0取码 =1置码(BX) |
成功:AX=策略码 失败:AX=错误码 |
59H |
取扩充错误码 |
|
AX=扩充错误码 BH=错误类型 |
5AH |
建立临时文件 |
CX=文件属性 DS:DX=ASCⅡZ串地址 |
成功:AX=文件代号 失败:AX=错误码 |
5BH |
建立新文件 |
CX=文件属性 DS:DX=ASCⅡZ串地址 |
成功:AX=文件代号 失败:AX=错误码 |
5CH |
控制文件存取 |
AL=00封锁 =01开启 |
失败:AX=错误码 |
62H |
取程序段前缀地址 |
|
BX=PSP地址 |
注1:出口参数为:成功时,CF=0;失败时,CF=1,AX=错误码 注2:出口参数为:成功时,CF=0,AX=文件号;失败时,CF=1,AX=错误码 |