中断INT 21H :
1、字符功能调用类(Character-Oriented Function)
01H、07H和08H — | 从标准输入设备输入字符 |
02H — | 字符输出 |
03H — | 辅助设备的输入 |
04H — | 辅助设备的输出 |
05H — | 打印输出 |
06H — | 控制台输入/输出 |
09H — | 显示字符串 |
0AH — | 键盘缓冲输入 |
0BH — | 检测输入状态 |
0CH — | 清输入缓冲区的输入功能 |
功能描述: | 从标准输入设备(如:键盘)读入一个字符。该中断在处理过程中将一直处于等待状态直到有字符可读为止。该输入还可被重定向,如果这样做,则无法判断文件是否已到文件尾 | |
入口参数: | AH=01H,过滤掉控制字符,并回显 =07H,不过滤掉控制字符,不回显 =08H,过滤掉控制字符,不回显 |
|
出口参数: | AL=输入字符的ASCII码 |
功能描述: | 向标准输出设备(如:屏幕)输出一个字符。该输出还可被重定向,如果这样做,则将无法判断磁盘是否满 | |
入口参数: | AH=02H DL=待输出字符的ASCII码 |
|
出口参数: | 无 |
功能描述: | 从辅助设备读入一个字符,该辅助设备的缺省值为COM1 | |
入口参数: | AH=03H | |
出口参数: | AL=读入字符的ASCII码 |
功能描述: | 向辅助设备输出一个字符,该辅助设备的缺省值为COM1 | |
入口参数: | AH=04H DL=待输出字符的ASCII码 |
|
出口参数: | 无 |
功能描述: | 向标准的输出设备输出一个字符。该缺省的输出设备为LPT1端口的打印机,除非用MODE命令来改变 | |
入口参数: | AH=05H DL=待输出字符的ASCII码 |
|
出口参数: | 无 |
功能描述: | 控制台(如:键盘、屏幕)输入/输出。如果输入/输出操作被重定向,那么,将无法判断文件是否已到文件尾,或磁盘已满 | |
入口参数: | AH=06H,DL=输入/输出功能选择 | |
出口参数: | 若DL=00H-FEH,则此功能为输出,DL为待输出字符的ASCII码; 若DL=0FFH,则此功能为输入,此时:若ZF=1,则无字符可读,否则,AL=读入字符的ASCII码 |
功能描述: | 输出一个字符串到标准输出设备上。如果输出操作被重定向,那么,将无法判断磁盘已满 | |
入口参数: | AH=09H DS:DX=待输出字符的地址 说明:待显示的字符串以’$’作为其结束标志 |
|
出口参数: | 无 |
功能描述: | 从标准输入设备上读入一个字节字符串,遇到“回车键”结束输入(输入的字符在标准的输出设备上有回显)。如果该输入操作被重定向,那么,将无法判断文件是否已到文件尾 | |
入口参数: | AH=0AH DS:DX=存放输入字符的起始地址 接受输入字符串缓冲区的定义说明: 1、第一个字节为缓冲区的最大容量,可认为是入口参数; 2、第二个字节为实际输入的字符数(不包括回车键),可看作出口参数; 3、从第三个字节开始存放实际输入的字符串; 4、字符串以回车键结束,回车符是接受的最后一个字符; 5、若输入的字符数超过缓冲区的最大容量,则多出的部分被丢弃,系统并发出响铃,直到输入“回车”键才结束输入。 例如: |
|
出口参数: | 无 |
功能描述: | 检查标准输入设备上是否有字符可读。该输入操作可被重定向 | |
入口参数: | AH=0BH | |
出口参数: | AL=00H——无字符可读;FFH——有字符可读 |
功能描述: | 清空当前的标准输入缓冲区,再读入字符。其输入操作可被重定向 | ||||||||
入口参数: | AH=0CH AL=01H、06H、07H、08H或0AH |
||||||||
出口参数: | 若入口参数AL为0AH,则DS:DX=存放输入字符的起始地址,否则,出口参数AL=输入字符的ASCII码 2、目录控制功能(Directory-Control Function)
|
(1)、功能39H
功能描述: | 用指定的驱动器和路径创建一个新目录 | |
入口参数: | AH=39H DS:DX=指定路径的字符串地址(以0为字符串的结束标志) |
|
出口参数: | CF=0——创建成功,否则,AX=错误号(03H或05H),其含义见错误代码表 |
功能描述: | 删除指定的驱动器和路径的目录 | |
入口参数: | AH=3AH DS:DX=指定路径的字符串地址(以0为字符串的结束标志) |
|
出口参数: | CF=0——删除成功,否则,AX=错误号(03H或05H),其含义见错误代码表 |
功能描述: | 用指定的驱动器和路径设置为当前目录 | |
入口参数: | AH=3BH DS:DX=指定路径的字符串地址(以0为字符串的结束标志) |
|
出口参数: | CF=0——设置成功,否则,AX=错误号(03H),其含义见错误代码表 |
功能描述: | 取当前目录的完全路径字符串 | |
入口参数: | AH=47H DL=驱动器号(0=缺省,1=A,…) DS:SI=存放当前目录字符串的地址 |
|
出口参数: | CF=0——读取成功,否则,AX=错误号(0FH),其含义见错误代码表 |
3、磁盘管理功能(Disk-Management Function)
0DH — | 磁盘复位 | 2EH —设置校验标志 |
0EH — | 选择磁盘 | 36H —读取驱动器分配信息 |
19H — | 读取当前驱动器 | 54H —读取校验标志 |
1BH, 1CH — | 读取驱动器数据 |
(1)、功能0DH
功能描述: | 清空当前的文件缓冲区,但在MS-DOS内,暂时写入缓冲区的数据将写入磁盘 | |
入口参数: | AH=0DH | |
出口参数: | 无 |
功能描述: | 指定当前驱动器 | |
入口参数: | AH=0EH DL=驱动器号(0=A,1=B,...) |
|
出口参数: | AL=系统中当前的驱动器号 |
功能描述: | 取当前缺省驱动器号 | |
入口参数: | AH=19H | |
出口参数: | AL=驱动器号(0=A,1=B,...) |
功能描述: | 获得驱动器的分配信息 | |
入口参数: | AH=1BH——为缺省驱动器 AH=1CH——为任意驱动器,DL=驱动器号(0=缺省,1=A,...) |
|
出口参数: | AL=0FFH——失败,否则, AL=每簇的扇区数 DS:BX=ID字节的地址 CX=物理扇区的大小(字节数) DX=驱动器的簇数 |
功能描述: | 设置/清除操作系统自动读取检验标志 | |
入口参数: | AH=2EH DL=00H AL=00H——清除该标志,01H——设置该标志 |
|
出口参数: | 无 |
功能描述: | 取选定驱动器的信息 | |
入口参数: | AH=36H DL=驱动器号(0-缺省,1=A,2=B,…) |
|
出口参数: | 若功能调用失败,AX=0FFFFH,否则, AX=每簇的扇区数 BX=可用的簇数 CX=物理扇区的大小(字节数) DX=驱动器中的簇数 |
功能描述: | 读取校验标志 | |
入口参数: | AH=54H | |
出口参数: | AL=当前检验标志值:00H—关检验,01H—开检验 |
4、文件操作功能(File Operation Function)
3CH — | 创建文件 |
3DH — | 打开文件 |
3EH — | 关闭文件 |
41H — | 删除文件 |
43H — | 读取/设置文件属性 |
45H — | 复制文件句柄 |
46H — | 重定义文件句柄 |
4EH — | 查找到第一个文件 |
4FH — | 查找下一个文件 |
56H — | 文件换名 |
57H — | 读取/设置文件的日期和时间 |
5AH — | 创建临时文件 |
5BH — | 创建新文件 |
67H — | 设置文件句柄数(最多文件数) |
6CH — | 扩展的打开文件功能(打开、创建或替换文件) |
(1)、功能3CH
功能描述: | 用指定的文件名创建一个新文件。如果指定的文件已存在,则设置其长度为0。创建后,该文件是打开的,并返回其句柄 | ||
入口参数: | AH=3CH DS:DX=指定文件名字符串的地址(以0为字符串的结束标志) CX=文件属性(这些标志位可以组合)
|
||
出口参数: | CF=0——创建成功,AX=文件句柄,否则,AX=错误号(03H、04H或05H),其含义见错误代码表 |
功能描述: | 打开指定的驱动器、路径和文件名,并返回其文件句柄 | ||||||||||||||
入口参数: | AH=3DH DS:DX=表明文件的字符串(以0为字符串的结束标志) AL为打开方式:
|
||||||||||||||
出口参数: | CF=0——打开成功,AX=文件句柄,否则,AX=错误号(02H、03H、04H、05H或0CH),其含义见错误代码表 |
功能描述: | 关闭指定句柄的文件 | |
入口参数: | AH=3EH BX=文件句柄 |
|
出口参数: | CF=0——关闭成功,否则,AX=错误号(06H),其含义见错误代码表 |
功能描述: | 删除指定的文件 | |
入口参数: | AH=41H DS:DX=文件名字符串的地址 |
|
出口参数: | CF=0——删除成功,否则,AX=错误号(02H、03H或05H),其含义见错误代码表 |
功能描述: | 读取或设置指定文件的属性 | ||||||
入口参数: | AH=43H BX=文件句柄 DS:DX=文件名字符串的地址 AL=00H/01H——读取/设置文件属性 CX=文件属性:
|
||||||
出口参数: | CF=0——关闭成功,CX=文件属性,否则,AX=错误号(01H、02H、03H或05H),其含义见错误代码表 |
功能描述: | 复制当前打开设备或文件的句柄,该句柄对应同样设备或文件的相同位置 | |
入口参数: | AH=45H BX=待复制的文件句柄 |
|
出口参数: | CF=0——复制成功,AX=新句柄,否则,AX=错误号(04H或06H),其含义见错误代码表 |
功能描述: | 指定二个句柄,把第二句柄指向第一个句柄,即第二个句柄被重定向 | |
入口参数: | AH=46H BX=文件或设备的句柄 CX=待重定向的文件句柄 |
|
出口参数: | CF=0——重定向成功,否则,AX=错误号(04H或06H),其含义见错误代码表 |
功能描述: | 获取第一个与给定的文件名相匹配的文件 | ||||||||||||
入口参数: | AH=4EH DS:DX=给定文件名的字符串 CX=搜索时使用的文件属性:
|
||||||||||||
出口参数: | CF=1——操作失败,AX=错误号(02H、03H或12H),其含义见错误代码表,否则,操作成功,DTA(Disk Transfer Area)按下列方式填入数据:
|
功能描述: | 在中断21H的功能4EH成功使用之后,再搜索下一个文件名 | |
入口参数: | AH=4FH AL=返回的代码 |
|
出口参数: | CF=1——操作失败,AX=错误号(12H),其含义见错误代码表,否则,操作成功,DTA中的数据如前面功能4EH所示 |
功能描述: | 文件换名 | |
入口参数: | AH=56H DS:DX=当前文件名字符串地址 ES:DI=新文件名字符串地址 |
|
出口参数: | CF=0——操作成功,否则,AX=错误号(02H、03H、05H、11H),其含义见错误代码表 |
功能描述: | 读取/设置文件的日期和时间 | ||||
入口参数: | AH=57H BX=文件句柄
|
||||
出口参数: | CF=1——操作失败,AX=错误号(01H、06H),其含义见错误代码表,否则,若是读文件信息,则,CX=时间,DX=日期 |
功能描述: | 创建临时文件 | ||||||
入口参数: | AH=5AH DS:DX=路径名的地址 CX=文件属性(位可组合),其定义如下:
|
||||||
出口参数: | CF=0——操作成功,AX=文件句柄,DS:DX=完整的路径文件地址,否则,AX=错误号(03H、04H或05H),其含义见错误代码表 |
功能描述: | 创建新文件 | |||||||||||||||||
入口参数: | AH=5BH DS:DX=路径名的地址 CX=文件属性(位可组合),其定义如下:
|
|||||||||||||||||
出口参数: | CF=0——操作成功,AX=文件句柄,否则,AX=错误号(03H、04H、05H或50H),其含义见错误代码表 |
功能描述: | 设置文件句柄数(最多文件数) | |
入口参数: | AH=67H BX=句柄的数量 |
|
出口参数: | CF=0——操作成功,否则,AX=错误号,其含义见错误代码表 |
功能描述: | 扩展的打开文件功能(打开、创建或替换文件) | |||||||||||||||||||||||||||||||||
入口参数: | AH=6CH AL=00H DS:SI=路径名的地址 BX=打开方式
|
|||||||||||||||||||||||||||||||||
出口参数: | CF=1——操作失败,AX=错误号,其含义见错误代码表,否则, AX=文件句柄 CX=1——文件存在,打开之 =2——文件不存在,创建之 |
5、文件操作功能(FCB)(File Operation Function)
0FH — | 打开文件 | 16H —创建文件 |
10H — | 关闭文件 | 17H —文件换名 |
11H、12H — | 查找第一个或下一个文件 | 23H —读取文件的大小 |
13H — | 删除文件 | 29H —分析文件名 |
(1)、功能0FH
功能描述: | 打开文件,并使之为顺序读/写作好准备 | |||||||||||||||||||||
入口参数: | AH=0FH DS:DX=文件控制块的地址 |
|||||||||||||||||||||
出口参数: | AL=00H——打开成功,否则,AL=FFH(如文件找不到) 在MS-DOS操作系统中,文件控制块的字段如下表所示。
|
功能描述: | 关闭文件 | |
入口参数: | AH=10H DS:DX=文件控制块的地址 |
|
出口参数: | AL=00H——关闭成功,否则,AL=FFH |
功能描述: | 查找第一个或下一个相匹配的文件 | |
入口参数: | AH=11H——第一个相匹配的文件 =12H——下一个相匹配的文件 DS:DX=文件控制块的地址 |
|
出口参数: | AL=00H——查找到,否则,AL=FFH |
功能描述: | 在指定(或缺省)的驱动器中,删除所有相匹配的文件 | |
入口参数: | AH=13H DS:DX=文件控制块的地址 |
|
出口参数: | AL=00H——删除成功,否则,AL=FFH |
功能描述: | 在当前目录中创建一个文件,其文件长度为0,并打开该文件,为随后的读/写操作作好必要的准备 | |
入口参数: | AH=16H DS:DX=未打开的文件控制块的地址 |
|
出口参数: | AL=00H——创建成功,否则,AL=FFH(如:磁盘满) |
功能描述: | 在指定的驱动器的当前目录中,把所有相匹配的文件换名 | |
入口参数: | AH=17H DS:DX=指定文件控制块的地址 |
|
出口参数: | AL=00H——换名成功,否则,AL=FFH |
功能描述: | 在当前目录中查找一个相匹配的文件。如果发现,则用其记录数来更新其文件大小 | |
入口参数: | AH=23H DS:DX=未打开的文件控制块的地址 |
|
出口参数: | AL=00H——匹配成功,FCB中偏移量为21H的字段被设置为其记录数,否则,AL=0FFH |
功能描述: | 分析一个字符串(文件名)置入FCB表中的不同字段 | ||||||||||||||
入口参数: | AH=29H CX=要写入的记录数 DS:SI=字符串段的地址 ES:DI=FCB的地址 AL=分析的控制标志位
|
||||||||||||||
出口参数: | AL=00H—没有通配字符 01H—有通配字符 FFH—驱动器号非法 DS:SI=分析后文件名第一个字符的地址 ES:DI=格式化后的、未打开的FCB地址 |
6、记录操作功能(Record Function)
1AH —设置数据传输区地址 | 42H —设置文件指针 | |
2FH —读取数据传输区地址 | 5CH —文件区域加锁或解锁 | |