磁盘文件存取技术_第1页
磁盘文件存取技术_第2页
磁盘文件存取技术_第3页
磁盘文件存取技术_第4页
磁盘文件存取技术_第5页
已阅读5页,还剩12页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第11章磁盘文件存取技术

11.1有关概念

11.2磁盘文件管理系统功能调用

11.1扩展磁盘文件管理有关概念

DOS提供的磁盘管理功能包括三个方面:一是关于文件内部所存放的数据,比如建立、读、写等二是针对文件的外部属性,如查找文件的名称、日期三是目录管理的创建、删除功能等1、ASCIIZ串

ASCIIZ串—对文件进行说明。ASCIIZ串最后一个字节为0,其余字节是指示文件位置的ASCII码字符串。

[d:][path]filename.ext,00用变量定义的形式就写作:

filenameDB'C:\SAMPLE.TXT',002、文件代号文件建立或打开后,DOS在自已的保留区建立一个有关文件名、存放盘、路径及读写位置指针等信息的控制块,而返回给用户的是一个16位的二进制控制字,称为文件代号。用这个上文件代号可以方便的访问相应的文件。

DOS已经预定义了文件代号0到4与标准输入输出设备对应,即

0──标准输入设备,键盘;

1──标准输出设备,屏幕;

2──错误输出的标准设备,屏幕;

3──标准辅助设备(通信端口);

4──标准打印设备。这5个文件代号长期处于打开状态,应用程序可以直接使用。3、错误返回码

0,操作成功

CF=1,操作失败错误类型码保存在AX寄存器中(如图)4、文件属性—有一个字节表示

只读隐藏系统卷标子目录归档

76543 21 0位号:代码(Hex)错误原因代码(Hex)错误原因0001非法功能号0008内存不够0002文件未找到000C非法存取代码0003路径未找到000D非法数据0004同时打开的文件太多0010试图删除当前目录0005拒绝访问0011设备不一致0006非法文件代号

文件操作的错误代码

子功能号(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)

【例11.1】从键盘读入一个符号串作为文件名,如果文件存在,则显示其中的内容。

【解】dataSEGMENTstr1DB'InputFileName:$'str2DB13,10,'Filenotfound.',13,10,'$'fnDB80,81dup(0)handleDW0

bufDB10000DUP(0)dataENDScodeSEGMENTASSUMECS:code,DS:datamain:MOVAX,dataMOVDS,AXLEADX,str1MOVAH,9INT21H;先显示出提示信息InputFileName:INCAHLEADX,fnINT21H;以DOS的10号子功能读入字符串,作为文件名

MOVBL,[fn+1]XORBH,BH

MOV[fn+BX+2],0;置文件名字符串的结束标记

LEADX,[fn+2]MOVAX,3D00HINT21H;打开文件

JNCopened;打开成功转

MOVAH,9LEADX,str2INT21H;提示Filenotfound.JMPfinishopened:MOV[handle],AX;保存文件代号到变量handle中next:MOVBX,[handle];取文件代号

MOVAH,3FHLEADX,buf

MOVCX,10000INT21H;读10000个字符,若不足则按实际情况读入

MOVCX,AX;实际读入字符数

MOVAH,40HMOVBX,1

INT21H;向1号文件(标准输出设备,屏幕)输出

CMPCX,10000JEnext;读满缓冲区,而文件可能未读完,转

MOVBX,[handle]MOVAH,3EHINT21H;关闭文件finish:MOVAH,4CHINT21HRETcodeENDSENDmain

【例11.2】给定如下条件:(1)文件student.dbf中存放着1000个学生的信息,每条信息占用40个字节的存储空间,依次存放1个字型的学号、8个字符构成的字符串作为姓名、30个字符构成的字符串作为家庭住址。(2)子程序lookup能够完成查找索引的功能。调用前以入口参数AX中存放学号,调用后若该学号存在,CF会置0,且(CX,DX)存放该学号在主文件中的地址(即文件指针),学号不存在则CF为1。(3)文件student.dbf已经打开,文件代号存放在变量handle中。(4)变量buf已在数据段中定义,用于存放读入的一个学生的信息。要求:编写一个子程序search,入口参数是在AX中存放的正整数作为学号。若该学号存在,把CF置0,并读出该学生有关信息,送到变量buf中,否则把CF置1。

【解】子程序的功能、入口参数及出口参数都很明确,子程序清单如下:

searchPROCNEARPUSHBXPUSHCXPUSHDXPUSHDS

CALLlookup;调用已给出的子程序,在索引中查找

JCerror;找不到转,找到时(CX,DX)值刚好作为移动文件指针的入口参数

MOVBX,[handle];取文件代号

MOVAX,4200HINT21H;移动指针到正确位置

JCerror;文件操作出错转

MOVAX,SEGbufMOVDS,AXMOVAH,3FH

LEADX,buf;DS:DX为读盘缓冲区首地址

MOVCX,40;读取的字节数

INT21Herror:POPDSPOPDXPOPCXPOPBXRETsearchENDP11.3有关文件外部特性与目录的操作子功能号(AH)功能入口参数出口参数39H建立子目录DS:DX=路径字符串首地址

3AH删除子目录DS:DX=路径字符串首地址

3BH改变当前目录DS:DX=路径字符串首地址

41H删除文件DS:DX=待删除文件名字符串首地址

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论