第11章磁盘文件存取技术 111有关概念 1,2磁盘文件管理系统功能调用
第11章 磁盘文件存取技术 11.1 有关概念 11.2 磁盘文件管理系统功能调用
111扩展磁盘文件管理有关概念 DOS提供的磁盘管理功能包括三个方面: 是关于文件内部所存放的数据,比如建立、读、写等 是针对文件的外部属性,如査找文件的名称、日期 三是目录管理的创建、删除功能等
11.1 扩展磁盘文件管理有关概念 DOS提供的磁盘管理功能包括三个方面: 一是关于文件内部所存放的数据,比如建立、读、写等 二是针对文件的外部属性,如查找文件的名称、日期 三是目录管理的创建、删除功能等
1、 ASCI串 ASCI串一对文件进行说明。 ASCII串最后一个字节 为0,其余字节是指示文件位置的ASCI码字符串。 Id: path filename. ext, 00 用变量定义的形式就写作: filename DB 'C: SAMPLE.TXT.00 2、文件代号 文件建立或打开后,DOS在自已的保留区建立一个有关 文件名、存放盘、路径及读写位置指针等信息的控制块,而 返回给用户的是一个16位的二进制控制字,称为文件代号。 用这个上文件代号可以方便的访问相应的文件
1、ASCIIZ串 ASCIIZ串—对文件进行说明。ASCIIZ串最后一个字节 为0,其余字节是指示文件位置的ASCII码字符串。 [d:][path]filename.ext,00 用变量定义的形式就写作: filename DB 'C:\SAMPLE.TXT',00 2、文件代号 文件建立或打开后,DOS在自已的保留区建立一个有关 文件名、存放盘、路径及读写位置指针等信息的控制块,而 返回给用户的是一个16位的二进制控制字,称为文件代号。 用这个上文件代号可以方便的访问相应的文件
DOS已经预定义了文件代号0到4与标准输入输出设备 对应,即 0一标准输入设备,键盘; 1—标准输出设备,屏幕; 2——错误输出的标准设备,屏幕; 3——标准辅助设备(通信端口); 标准打印设备 这5个文件代号长期处于打开状态,应用程序可以直接 使用
DOS已经预定义了文件代号0到4与标准输入输出设备 对应,即 0 ── 标准输入设备,键盘; 1 ── 标准输出设备,屏幕; 2 ── 错误输出的标准设备,屏幕; 3 ── 标准辅助设备(通信端口); 4 ── 标准打印设备。 这5个文件代号长期处于打开状态,应用程序可以直接 使用
3、错误返回码 0,操作成功 CF= 1,操作失败 错误类型码保存在AX寄存器中(如图) 4、文件属性一有一个字节表示 位号:76543210 只读 隐藏 系统 卷标 子目录 归档
3、错误返回码 0,操作成功 CF= 1,操作失败 错误类型码保存在AX寄存器中(如图) 4、文件属性—有一个字节表示 只读 隐藏 系统 卷标 子目录 归档 位号:7 6 5 4 3 2 1 0
文件操作的错误代码 代码(Hex) 错误原因 代码(Hex) 错误原因 0001 非法功能号 0008 内存不够 0002 文件未找到 000C 非法存取代码 0003 路径未找到 000D 非法数据 00044 同时打开的文件太多 0010 试图删除当前目录 0005 拒绝访问 设备不一致 0006 非法文件代号
代码(Hex) 错 误 原 因 代码(Hex) 错 误 原 因 0001 非法功能号 0008 内存不够 0002 文件未找到 000C 非法存取代码 0003 路径未找到 000D 非法数据 0004 同时打开的文件太多 0010 试图删除当前目录 0005 拒绝访问 0011 设备不一致 0006 非法文件代号 文件操作的错误代码
12常用扩展磁盘文件管理系统功能调用(2IH) 子功能号 功能 入口参数 出口参数 (AH) 3CH创建DSDX=文件名首字符逻辑地址 AX=文件代号 CX=文件属性 3DH打开 DS:DX=文件名首字符逻辑地址 AX=文件代号 AL=存取代码 3EH关闭BX=文件代号 DS:DX=数据缓冲区逻辑地址 3FH 读BX=文件代号 AX=实际读取的字节数 CX=读取的字节数 DS:DX=数据缓冲区逻辑地址 40H 读|BX=文件代号 AX=实际写入的字节数 CX=写入的字节数 4H移动(xD)=移动字节数有符号 指针双字AL=方式码 (DX,AX)=新的指针位置 BX=文件代号
子功能号 (AH) 功 能 入 口 参 数 出 口 参 数 3CH 创建 DS:DX = 文件名首字符逻辑地址 CX = 文件属性 AX = 文件代号 3DH 打开 DS:DX = 文件名首字符逻辑地址 AL = 存取代码 AX = 文件代号 3EH 关闭 BX = 文件代号 3FH 读 DS:DX = 数据缓冲区逻辑地址 BX = 文件代号 CX = 读取的字节数 AX = 实际读取的字节数 40H 读 DS:DX = 数据缓冲区逻辑地址 BX = 文件代号 CX = 写入的字节数 AX = 实际写入的字节数 42H 移动 指针 (CX, DX) = 移动字节数,有符号 双字 AL = 方式码 BX = 文件代号 (DX, AX) = 新的指针位置 11.2 常用扩展磁盘文件管理系统功能调用(21H)
【例1】从键盘读入一个符号串作为文件名,如果文件 存在,则显示其中的内容。 (解】 data SEgMENT strl Db 'Input File Name: Si str2 DB 13. 10. 'File not found. 13.10'S fn DB 80,81dup handle dw o buf DB 10000 DUP(O data ENDS code SEgment ASSUME CS: code. DS: data
【例11.1】从键盘读入一个符号串作为文件名,如果文件 存在,则显示其中的内容。 【解】 data SEGMENT str1 DB 'Input File Name : $' str2 DB 13,10, 'File not found. ',13,10, '$' fn DB 80,81 dup(0) handle DW 0 buf DB 10000 DUP(0) data ENDS code SEGMENT ASSUME CS:code,DS:data
main: MOv AX.data MOV DS.AX LEA DX. strl MOV AH,9 INT 21H 先显示出提示信息 Input File name INC AH lea DX. fn INT2IH;以DOS的10号子功能读入字符串,作 为文件名 MOV BL,fn+1 XOR BH, BH
main: MOV AX,data MOV DS,AX LEA DX,str1 MOV AH,9 INT 21H ;先显示出提示信息Input File Name : INC AH LEA DX,fn INT 21H ;以DOS的10号子功能读入字符串,作 为文件名 MOV BL,[fn+1] XOR BH,BH
MO|fn+BX+2l,0;置文件名字符串的结束标记 LEA DX,fn+2 MOV AX. 3DOOH 21H 打开文件 JNC opened 打开成功转 MOV AH.9 LEA DX.str2 21H ;提示 File not found. JMP finish
MOV [fn+BX+2],0 ;置文件名字符串的结束标记 LEA DX,[fn+2] MOV AX,3D00H INT 21H ;打开文件 JNC opened ;打开成功转 MOV AH,9 LEA DX,str2 INT 21H ;提示File not found. JMP finish