中断命令格式: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=错误码 |