北京理工大学汇编语言实验六磁盘文件存取实验报告_第1页
北京理工大学汇编语言实验六磁盘文件存取实验报告_第2页
北京理工大学汇编语言实验六磁盘文件存取实验报告_第3页
北京理工大学汇编语言实验六磁盘文件存取实验报告_第4页
北京理工大学汇编语言实验六磁盘文件存取实验报告_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

第六章磁盘文件存取实验(设计性实验)一、实验要求和目的1.理解文件、目录的概念;2.了解FCB(文件控制块)方式文件管理方法;3.掌握文件代号式文件存取方式;4.学习使用文件指针读取文件二、软硬件环境1.硬件环境:计算机系统windows;2.软件环境:装有MASM、DEBUG、LINK、等应用程序。三、实验涉及的主要知识单元DOS功能调用中断(INT21H)提供了两类磁盘文件管理功能,一类是FCB(文件控制块)方式,另一类是文件代号式存取方式。对于文件的管理,实际上是对文件的读写管理,DOS设计了四种存取文件方式:顺序存取方式、随机存取方式、随机分块存取方式和代号法存取方式。文件的处理步骤A)写之前必须先建立文件、读之前必须先打开文件。B)写文件之后一定要关闭文件。通过关闭文件,使操作系统确认此文件放在磁盘哪一部分,写后不关闭会导致写入文件不完整。1、文件代号式存取方式:当用户需要打开或建立一个文件时,必须提供文件标识符。文件标识符用ASCIIZ字符串表示。ASCIIZ字符串是指文件标识符的ASCII字符串后面再加1个“0”字符。文件标识符的字符串包括驱动器名、路径名和文件名。其格式为[d:][path]filename[.exe]其中d为驱动器名,path为路径名,.exe为文件名后缀。中断21H提供了许多有关目录和文件操作的功能,其中文件代号式存取方式常用的功能如下:2、操作目录的常用功能39H——创建目录3BH——设置当前目录3AH——删除目录47H——读取当前目录有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅相关资料之目录控制功能。3、用文件句柄操作文件的常用功能3CH——创建文件4EH——查找到第一个文件3DH——打开文件4FH——查找下一个文件3EH——关闭文件56H——文件换名3FH——读文件或设备57H——读取/设置文件的日期和时间40H——写文件或设备5AH——创建临时文件41H——删除文件5BH——创建新文件42H——设置文件指针67H——设置文件句柄数(最多文件数)43H——读取/设置文件属性6CH——扩展的打开文件功能有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅相关资料之文件操作功能。下面简单介绍几种常用的功能:(1).建立文件(3CH)功能:按指定文件名建立文件。入口参数:(AH)=3CH,DS:DX指向ASCIIZ字符串的段地址和偏移地址,(CX)=文件属性。出口参数:若操作成功,则CF=0,(AX)=文件代号;若操作失败,则CF=1,(AX)=错误代码。(2).打开文件(3DH)功能:打开由ASCIIZ串指定的文件。入口参数:(AH)=3DH,DS:DX指向ASCIIZ字符串的段地址和偏移地址,(AL)=存取方式代码(0:读文件,1:写文件,2:读、写文件)。出口参数:若操作成功,则CF=0,(AX)=文件代号;若操作失败,则CF=1,(AX)=错误代码。(3).关闭文件(3EH)功能:关闭文件代号指定的文件。入口参数:(AH)=3EH,(BX)=文件代号。出口参数:若操作成功,则CF=0;若操作失败,则CF=1,(AX)=错误代码。(4).读文件(3FH)功能:按文件代号读取文件。入口参数:(AH)=3FH,(BX)=文件代号,(CX)=要读取的字节数;DS:DX指向接收数据缓冲区的段地址和偏移地址。出口参数:若操作成功,则CF=0,(AX)=实际读入字节数,(AX)=0,文件结束;若操作失败,则CF=1,(AX)=错误代码。(5).写文件(40H)功能:按文件代号写文件。入口参数:(AH)=40H,(BX)=文件代号,(CX)=要写入的字节数;DS:DX指向存放写入信息数据缓冲区的段地址和偏移地址。出口参数:若操作成功,则CF=0,(AX)=写入字节数;若操作失败,则CF=1,(AX)=错误代码。(6).移动文件指针(42H)功能:移动由文件代号标志的文件读写指针的位置入口参数:在bx预置文件代号,在cx:dx双字中预置移动位移量,在al中预置移动方式移动方式:00h移动后文件指针值=0+移动位移量01h移动后文件指针值=当前文件指针值+移动位移量02h移动后文件指针值=文件尾值+移动位移量出口参数:CF=0表示移动成功,此时CX:DX双字中返回移动后文件指针值;CF=1表示移动失败,此时AX中返回值为1表示移动方式无效,为6表示无效的文件代号。(7).取/置文件属性(43H)功能:按文件代号写文件。入口参数:(AH)=43H,DS:DX指向ASCIIZ串的段地址和偏移地址。(AL)=0,取文件属性,(AL)=1,置文件属性;置文件属性时,(CX)=新文件属性(低字节)。出口参数:若操作成功,则CF=0,若为取属性,(CX)=文件属性;若操作失败,则CF=1,(AX)=错误代码。用FCB操作文件的常用功能和磁盘绝对读写中断请参阅相关资料,不作要求。四、实验内容与步骤(文件代号式存取方式)1、编写一个创建子目录的程序,具体要求如下:1)用键盘输入一个目录路径名,若输入的字符串为空,则程序运行结束;2)若目录创建成功,显示成功信息,否则,显示创建失败信息。·流程图如下:·源代码如下:datasegmenthandledw?msg1db'Pleaseinputthedirectoryroute:',0dh,0ah,'$'msg2db0dh,0ah,'Error:createdirectoryfailed!',0dh,0ah,'$'msg3db0dh,0ah,'Createdirectorysuccessful!',0dh,0ah,'$'dirn_bufdb64db?dirn_strdb64dup(0)dataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axleadx,msg1movah,09hint21h;;输出提示信息leadx,dirn_bufmovah,0ahint21hmovbl,[dirn_buf+1]movbh,0movdirn_str[bx],0;;输入目录路径,将串尾回车更换为00cmpbyteptr[dirn_buf+1],0jzexit;;输入为空,直接退出leadx,dirn_strmovcx,00hmovah,39hint21h;;创建目录jcerror;;错误movhandle,ax;;保存文件代号leadx,msg3movah,09hint21h;;输出成功信息movbx,handlemovah,3ehint21h;;关闭文件jmpexiterror:leadx,msg2;;输出错误信息movah,09hint21hexit:movax,4c00hint21hcodeendsendstart·运行结果如下:此时已经成功在G盘下创建abc文件夹2、编写一个创建文件的程序,其要求如下:1)用键盘输入文件名(可包含路径),若输入的字符串为空,则程序运行结束;2)若目录创建成功,显示成功信息,否则,显示创建失败信息;·流程图如下:·源代码如下:datasegmenthandledw?msg1db'Pleaseinputthefileroute:',0dh,0ah,'$'msg2db0dh,0ah,'Error:createfilefailed!',0dh,0ah,'$'msg3db0dh,0ah,'Createfilesuccessful!',0dh,0ah,'$'msg4db0dh,0ah,'Error:writefilefailed!',0dh,0ah,'$'msg5db0dh,0ah,'Pleaseinput20characters:',0dh,0ah,'$'fn_bufdb64db?fn_strdb64dup(0)wf_bufdb64db?wf_strdb64dup(0)dataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axleadx,msg1movah,09hint21h;;输出提示信息leadx,fn_bufmovah,0ahint21hmovbl,[fn_buf+1]movbh,0movfn_str[bx],0;;输入文件路径,串尾回车用00代换cmpbyteptr[fn_buf+1],0jzexit;;输入为空,直接退出leadx,fn_strmovcx,00hmovah,3chint21h;;创建文件jcerror;;失败,退出movhandle,axleadx,msg3movah,09hint21h;;保存文件代号,输出成功信息leadx,msg5movah,09hint21h;;输出提示信息leadx,wf_bufmovah,0ahint21h;;从键盘输入串leadx,wf_strmovbx,handlemovcl,byteptr[wf_buf+1]movch,0movah,40hint21h;;将串写入到刚创建的文件jcwf_errormovbx,handlemovah,3ehint21h;;关闭文件jmpexiterror:leadx,msg2movah,09hint21hjmpexit;;创建失败wf_error:leadx,msg4movah,09hint21h;;写文件失败exit:movax,4c00hint21hcodeendsendstart·运行结果如下:在磁盘路径下搜索,可以看见如下内容:证明程序代码正确3)从键盘输入20个字符存放到新建立的文件中。3、利用文件句柄将两个文件合并成一个文件。要求:1)在第一个文件末尾处换行回车,插入“Thesecondfileasfollow:”;2)换行回车,把第二个文件内容存放在后面。·流程图如下:·源代码如下:DATASEGMENTSFILEDB40,41DUP(?)DFILEDB40,41DUP(?)ASK1DB0AH,0DH,'INPUTSOURCEFILE:$'ASK2DB0AH,0DH,'INPUTDESTFILE:$'WRITEDB0AH,0DH,'thesecondfileasfollow:',0AH,0DHCOUNTXEQU$-WRITEERR1DB0AH,0DH,'CREATEFILEERROR:$'ERR2DB0AH,0DH,'OPENFILEERROR:$'ERR3DB0AH,0DH,'READFILEERROR:$'ERR4DB0AH,0DH,'WRITEFILEERROR:$'ERR5DB0AH,0DH,'CLOSEFILEERROR:$'ERR6DB0AH,0DH,'DISKFULLERROR:$'BUFRDW?BUFFERDB512DUP(0)DATAENDSCODESEGMENT ASSUMECS:CODE,DS:DATA,ES:DATAHANDLEPROCFAR MOVAX,DATA;20 MOVDS,AX MOVES,AX LEADX,ASK1 MOVAH,9 INT21H LEADX,SFILE CALLINPUT MOVCL,SFILE+1 MOVCH,0 MOVSI,CX MOVSFILE[SI+2],0 LEADX,SFILE+2 MOVAH,3DH MOVAL,2 INT21H JNCMFH OERR: LEADX,ERR2ERR: MOVAH,9 INT21H MOVAH,4CH;40 INT21HMFH: MOVBX,AX MOVBUFR,AX MOVCX,0 MOVDX,0 MOVAL,2 MOVAH,42H INT21H JNCNEXT DECDXNEXT: MOVCX,DX MOVDX,AX MOVAL,0 MOVAH,42H INT21H LEADX,ASK2 MOVAH,9 INT21H LEADX,DFILE;60 CALLINPUT MOVCL,DFILE+1 MOVCH,0 MOVSI,CX MOVDFILE[SI+2],0 LEADX,DFILE+2 MOVAH,3DH MOVAL,0 INT21H MOVCX,COUNTX INCCX CALLINPUTX MOVCL,DFILE+1 MOVCH,0 MOVSI,CX MOVDFILE[SI+2],0 LEADX,DFILE+2 MOVAH,3DH MOVAL,0 INT21H JNCRFILE JMPOERRRFILE: MOVBX,AXRFILE1:LEADX,BUFFER;73 MOVCX,1024 MOVAH,3FH INT21H JNCWFILE LEADX,ERR3 JMPERRWFILE: ORAX,AX JZEXIT MOVCX,AX LEADX,BUFFER XCHGBX,BUFR MOVAH,40H INT21H JNCR_W LEADX,ERR4 JMPERR CMPAX,CX JER_W LEADX,ERR6 JMPERRR_W: XCHGBX,BUFR JMPRFILE1EXIT: MOVAH,3EH INT21H JNCEXIT1EXIT0: LEADX,ERR5 JMPERREXIT1: XCHGBX,BUFR MOVAH,3EH INT21H JCEXIT0 MOVAH,4CH INT21HHANDLEENDPINPUTPROC M

温馨提示

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

评论

0/150

提交评论