【2017年整理】北京理工大学汇编语言实验六磁盘文件存取实验报告

上传人:爱****1 文档编号:950189 上传时间:2017-05-23 格式:DOCX 页数:14 大小:414.32KB
返回 下载 相关 举报
【2017年整理】北京理工大学汇编语言实验六磁盘文件存取实验报告_第1页
第1页 / 共14页
【2017年整理】北京理工大学汇编语言实验六磁盘文件存取实验报告_第2页
第2页 / 共14页
【2017年整理】北京理工大学汇编语言实验六磁盘文件存取实验报告_第3页
第3页 / 共14页
【2017年整理】北京理工大学汇编语言实验六磁盘文件存取实验报告_第4页
第4页 / 共14页
【2017年整理】北京理工大学汇编语言实验六磁盘文件存取实验报告_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《【2017年整理】北京理工大学汇编语言实验六磁盘文件存取实验报告》由会员分享,可在线阅读,更多相关《【2017年整理】北京理工大学汇编语言实验六磁盘文件存取实验报告(14页珍藏版)》请在金锄头文库上搜索。

1、第六章磁盘文件存取实验(设计性实验)一、实验要求和目的1 理解文件、目录的概念;2 了解 FCB(文件控制块 )方式文件管理方法;3 掌握文件代号式文件存取方式;4 学习使用文件指针读取文件二、软硬件环境1 硬件环境:计算机系统 windows;2 软件环境:装有 MASM、DEBUG、LINK、等应用程序。三、实验涉及的主要知识单元DOS功能调用中断(INT 21H)提供了两类磁盘文件管理功能,一类是FCB(文件控制块)方式,另一类是文件代号式存取方式。对于文件的管理,实际上是对文件的读写管理, DOS 设计了四种存取文件方式:顺序存取方式、随机存取方式、随机分块存取方式和代号法存取方式。文

2、件的处理步骤A) 写之前必须先建立文件、读之前必须先打开文件。B) 写文件之后一定要关闭文件。通过关闭文件,使操作系统确认此文件放在磁盘哪一部分,写后不关闭会导致写入文件不完整。1、文件代号式存取方式:当用户需要打开或建立一个文件时,必须提供文件标识符。文件标识符用ASCII Z 字符串表示。ASCII Z 字符串是指文件标识符的ASCII 字符串后面再加1 个“0”字符。文件标识符的字符串包括驱动器名、路径名和文件名。其格式为d:pathfilename.exe其中d 为驱动器名,path 为路径名,.exe 为文件名后缀。中断 21H 提供了许多有关目录和文件操作的功能,其中文件代号式存取

3、方式常用的功能如下:2、操作目录的常用功能39H创建目录 3BH设置当前目录3AH删除目录 47H读取当前目录有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅相关资料之目录控制功能。3、用文件句柄操作文件的常用功能3CH创建文件 4EH查找到第一个文件3DH打开文件 4FH查找下一个文件3EH关闭文件 56H文件换名3FH读文件或设备 57H读取/设置文件的日期和时间40H写文件或设备 5AH创建临时文件41H删除文件 5BH创建新文件42H设置文件指针 67H设置文件句柄数(最多文件数)43H读取/设置文件属性 6CH扩展的打开文件功能有关中断功能的详细描述和调用参数在此从略,需要

4、查阅者可参阅相关资料之文件操作功能。下面简单介绍几种常用的功能:(1)建立文件(3CH)功能:按指定文件名建立文件。入口参数:(AH)3CH,DS:DX 指向ASCII Z 字符串的段地址和偏移地址,(CX)文件属性。出口参数:若操作成功,则CF0,(AX)文件代号;若操作失败,则CF1,(AX)错误代码。(2)打开文件(3DH)功能:打开由ASCII Z 串指定的文件。入口参数:(AH)3DH,DS:DX 指向ASCII Z 字符串的段地址和偏移地址,(AL)存取方式代码(0:读文件,1:写文件,2:读、写文件)。出口参数:若操作成功,则CF0,(AX)文件代号;若操作失败,则CF1,(AX

5、)错误代码。(3)关闭文件(3EH)功能:关闭文件代号指定的文件。入口参数:(AH)3EH,(BX)文件代号。出口参数:若操作成功,则CF0;若操作失败,则CF1,(AX)错误代码。(4)读文件(3FH)功能:按文件代号读取文件。入口参数:(AH)3FH,(BX)文件代号,(CX)要读取的字节数;DS:DX 指向接收数据缓冲区的段地址和偏移地址。出口参数:若操作成功,则CF0,(AX)实际读入字节数,(AX)0,文件结束;若操作失败,则CF1,(AX)错误代码。(5)写文件(40H)功能:按文件代号写文件。入口参数:(AH)40H,(BX)文件代号,(CX)要写入的字节数;DS:DX 指向存放

6、写入信息数据缓冲区的段地址和偏移地址。出口参数:若操作成功,则CF0,(AX)写入字节数;若操作失败,则CF1,(AX)错误代码。(6)移动文件指针(42H)功能:移动由文件代号标志的文件读写指针的位置入口参数:在bx 预置文件代号,在cx:dx 双字中预置移动位移量,在 al 中预置移动方式移动方式:00h 移动后文件指针值=0+移动位移量01h 移动后文件指针值=当前文件指针值+移动位移量02h 移动后文件指针值=文件尾值+移动位移量出口参数:CF=0 表示移动成功,此时CX:DX 双字中返回移动后文件指针值;CF=1 表示移动失败,此时AX 中返回值为1 表示移动方式无效,为6 表示无效

7、的文件代号。(7)取/置文件属性(43H)功能:按文件代号写文件。入口参数:(AH)43H,DS:DX 指向ASCII Z 串的段地址和偏移地址。(AL)0,取文件属性,(AL)1,置文件属性;置文件属性时,(CX)新文件属性(低字节)。出口参数:若操作成功,则CF0,若为取属性,(CX)文件属性;若操作失败,则CF1,(AX)错误代码。用FCB 操作文件的常用功能和磁盘绝对读写中断请参阅相关资料,不作要求。四、实验内容与步骤(文件代号式存取方式)1、编写一个创建子目录的程序,具体要求如下:1)用键盘输入一个目录路径名,若输入的字符串为空,则程序运行结束;2)若目录创建成功,显示成功信息,否则

8、,显示创建失败信息。流程图如下:源代码如下:data segmenthandle dw ?msg1 db Please input the directory route:, 0dh, 0ah, $msg2 db 0dh, 0ah, Error: create directory failed!, 0dh, 0ah, $msg3 db 0dh, 0ah, Create directory successful!, 0dh, 0ah, $dirn_buf db 64db ?dirn_str db 64 dup(0)data endscode segmentassume cs:code, ds:d

9、atastart:mov ax, datamov ds, axlea dx, msg1mov ah, 09hint 21h ;输出提示信息lea dx, dirn_bufmov ah, 0ahint 21hmov bl, dirn_buf+1mov bh, 0mov dirn_strbx, 0 ;输入目录路径,将串尾回车更换为00cmp byte ptr dirn_buf+1, 0jz exit ;输入为空, 直接退出lea dx, dirn_strmov cx, 00hmov ah, 39hint 21h ;创建目录jc error ;错误mov handle, ax ;保存文件代号lea

10、dx, msg3mov ah, 09hint 21h ;输出成功信息mov bx, handlemov ah, 3ehint 21h ;关闭文件jmp exiterror:lea dx, msg2 ;输出错误信息mov ah, 09hint 21hexit:mov ax, 4c00hint 21hcode endsend start运行结果如下:此时已经成功在G盘下创建abc文件夹2、编写一个创建文件的程序,其要求如下:1)用键盘输入文件名(可包含路径),若输入的字符串为空,则程序运行结束;2)若目录创建成功,显示成功信息,否则,显示创建失败信息;流程图如下:源代码如下:data segmen

11、thandle dw ?msg1 db Please input the file route:, 0dh, 0ah, $msg2 db 0dh, 0ah, Error: create file failed!, 0dh, 0ah, $msg3 db 0dh, 0ah, Create file successful!, 0dh, 0ah, $msg4 db 0dh, 0ah, Error: write file failed!, 0dh, 0ah, $msg5 db 0dh, 0ah, Please input 20 characters:, 0dh, 0ah, $fn_buf db 64db

12、 ?fn_str db 64 dup(0)wf_buf db 64db ?wf_str db 64 dup(0)data endscode segmentassume cs:code, ds:datastart:mov ax, datamov ds, axlea dx, msg1mov ah, 09hint 21h ;输出提示信息lea dx, fn_bufmov ah, 0ahint 21hmov bl, fn_buf+1mov bh, 0mov fn_strbx, 0 ;输入文件路径,串尾回车用00代换cmp byte ptr fn_buf+1, 0jz exit ;输入为空,直接退出le

13、a dx, fn_strmov cx, 00hmov ah, 3chint 21h ;创建文件jc error ;失败,退出mov handle, axlea dx, msg3mov ah, 09hint 21h ;保存文件代号,输出成功信息lea dx, msg5mov ah, 09hint 21h ;输出提示信息lea dx, wf_bufmov ah, 0ahint 21h ;从键盘输入串lea dx, wf_strmov bx, handlemov cl, byte ptr wf_buf+1mov ch, 0mov ah, 40hint 21h ;将串写入到刚创建的文件jc wf_er

14、rormov bx, handlemov ah, 3ehint 21h ;关闭文件jmp exiterror:lea dx, msg2mov ah, 09hint 21hjmp exit ;创建失败wf_error:lea dx, msg4mov ah, 09hint 21h ;写文件失败exit:mov ax, 4c00hint 21hcode endsend start运行结果如下:在磁盘路径下搜索,可以看见如下内容:证明程序代码正确3)从键盘输入 20 个字符存放到新建立的文件中。3、利用文件句柄将两个文件合并成一个文件。要求: 1)在第一个文件末尾处换行回车,插入“The second

15、 file as follow:”; 2)换行回车,把第二个文件内容存放在后面。流程图如下:源代码如下:DATA SEGMENTSFILE DB 40,41 DUP(?)DFILE DB 40,41 DUP(?)ASK1 DB 0AH,0DH,INPUT SOURCE FILE:$ASK2 DB 0AH,0DH,INPUT DEST FILE:$WRITE DB 0AH,0DH,the second file as follow:,0AH,0DHCOUNTX EQU $-WRITEERR1 DB 0AH,0DH,CREATE FILE ERROR:$ERR2 DB 0AH,0DH,OPEN FILE ERROR:$ERR3 DB 0AH,0DH,READ FILE ERROR:$ERR4 DB 0AH,0DH,WRITE FILE ERROR:$ERR5 DB 0AH,0DH,CLOSE FILE ERROR:$ERR6 DB 0AH,0DH,DISK FULL ERROR:$BUFR DW ?BUFFER DB 512 DUP(0)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATAHANDLE PROC FARMOV AX,DATA;20MOV DS,A

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号