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

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

《北京理工大学汇编语言实验六磁盘文件存取实验报告》由会员分享,可在线阅读,更多相关《北京理工大学汇编语言实验六磁盘文件存取实验报告(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 为文件名后

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

4、数) 43H读取/设置文件属性 6CH扩展的打开文件功能 有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅相关资料 之文件操作功能。下面简单介绍几种常用的功能: (1)建立文件(3CH) 功能:按指定文件名建立文件。 入口参数:(AH)3CH,DS:DX 指向ASCII Z 字符串的段地址和偏移地址, (CX)文件属性。 出口参数:若操作成功,则CF0,(AX)文件代号; 若操作失败,则CF1,(AX)错误代码。 (2)打开文件(3DH) 功能:打开由ASCII Z 串指定的文件。 入口参数:(AH)3DH,DS:DX 指向ASCII Z 字符串的段地址和偏移地址, (AL)存取方式

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

6、,(AX)错误代码。 (5)写文件(40H) 功能:按文件代号写文件。 入口参数:(AH)40H,(BX)文件代号,(CX)要写入的字节数; DS:DX 指向存放写入信息数据缓冲区的段地址和偏移地址。 出口参数:若操作成功,则CF0,(AX)写入字节数; 若操作失败,则CF1,(AX)错误代码。 (6)移动文件指针(42H) 功能:移动由文件代号标志的文件读写指针的位置 入口参数:在bx 预置文件代号,在cx:dx 双字中预置移动位移量,在 al 中 预置移动方式移动方式: 00h 移动后文件指针值=0+移动位移量 01h 移动后文件指针值=当前文件指针值+移动位移量 02h 移动后文件指针值

7、=文件尾值+移动位移量 出口参数:CF=0 表示移动成功,此时CX:DX 双字中返回移动后文件指针值; CF=1 表示移动失败,此时AX 中返回值为1 表示移动方式无效,为6 表示无效的 文件代号。 (7)取/置文件属性(43H) 功能:按文件代号写文件。 入口参数:(AH)43H,DS:DX 指向ASCII Z 串的段地址和偏移地址。 (AL)0,取文件属性,(AL)1,置文件属性; 置文件属性时,(CX)新文件属性(低字节)。 出口参数:若操作成功,则CF0,若为取属性,(CX)文件属性; 若操作失败,则CF1,(AX)错误代码。 用FCB 操作文件的常用功能和磁盘绝对读写中断请参阅相关资

8、料,不作要 求。四、实验内容与步骤(文件代号式存取方式)1、编写一个创建子目录的程序,具体要求如下: 1)用键盘输入一个目录路径名,若输入的字符串为空,则程序运行结束; 2)若目录创建成功,显示成功信息,否则,显示创建失败信息。 流程图如下:源代码如下: 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 direc

9、tory successful!, 0dh, 0ah, $ dirn_buf db 64 db ? dirn_str db 64 dup(0) data ends code segment assume cs:code, ds:data start: mov ax, data mov ds, ax lea dx, msg1 mov ah, 09h int 21h ;输出提示信息 lea dx, dirn_buf mov ah, 0ah int 21h mov bl, dirn_buf+1 mov bh, 0 mov dirn_strbx, 0 ;输入目录路径,将串尾回车更换为00 cmp by

10、te ptr dirn_buf+1, 0 jz exit ;输入为空, 直接退出 lea dx, dirn_str mov cx, 00h mov ah, 39h int 21h ;创建目录 jc error ;错误 mov handle, ax ;保存文件代号 lea dx, msg3 mov ah, 09h int 21h ;输出成功信息 mov bx, handle mov ah, 3eh int 21h ;关闭文件 jmp exit error: lea dx, msg2 ;输出错误信息 mov ah, 09h int 21h exit: mov ax, 4c00h int 21hco

11、de ends end start 运行结果如下:此时已经成功在G盘下创建abc文件夹 2、编写一个创建文件的程序,其要求如下: 1)用键盘输入文件名(可包含路径),若输入的字符串为空,则程序运行 结束; 2)若目录创建成功,显示成功信息,否则,显示创建失败信息; 流程图如下:源代码如下: data segment handle dw ? msg1 db Please input the file route:, 0dh, 0ah, $ msg2 db 0dh, 0ah, Error: create file failed!, 0dh, 0ah, $ msg3 db 0dh, 0ah, Cre

12、ate 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 64 db ? fn_str db 64 dup(0) wf_buf db 64 db ? wf_str db 64 dup(0) data ends code segment assume cs:code, ds:data start: mov ax, datamov ds,

13、ax lea dx, msg1 mov ah, 09h int 21h ;输出提示信息 lea dx, fn_buf mov ah, 0ah int 21h mov bl, fn_buf+1 mov bh, 0 mov fn_strbx, 0 ;输入文件路径,串尾回车用00代换 cmp byte ptr fn_buf+1, 0 jz exit ;输入为空,直接退出 lea dx, fn_str mov cx, 00h mov ah, 3ch int 21h ;创建文件 jc error ;失败,退出 mov handle, ax lea dx, msg3 mov ah, 09h int 21h

14、 ;保存文件代号,输出成功信息 lea dx, msg5 mov ah, 09h int 21h ;输出提示信息 lea dx, wf_buf mov ah, 0ah int 21h ;从键盘输入串 lea dx, wf_str mov bx, handle mov cl, byte ptr wf_buf+1 mov ch, 0 mov ah, 40h int 21h ;将串写入到刚创建的文件 jc wf_error mov bx, handle mov ah, 3eh int 21h ;关闭文件 jmp exit error: lea dx, msg2 mov ah, 09h int 21h

15、 jmp exit ;创建失败 wf_error:lea dx, msg4 mov ah, 09h int 21h ;写文件失败 exit: mov ax, 4c00h int 21h code ends end start 运行结果如下:在磁盘路径下搜索,可以看见如下内容:证明程序代码正确3)从键盘输入从键盘输入 20 个字符存放到新建立的文件中。个字符存放到新建立的文件中。3、利用文件句柄将两个文件合并成一个文件。要求: 1)在第一个文件末 尾处换行回车,插入“The second file as follow:”; 2)换行回车,把第二个文件 内容存放在后面。 流程图如下:源代码如下:

16、DATA SEGMENT SFILE 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,0DH COUNTX EQU $-WRITE ERR1 DB 0AH,0DH,CREATE FILE ERROR:$ ERR2 DB 0AH,0DH,OPEN FILE ERROR:$ ERR3 DB 0AH,0DH,READ FILE ERROR:$ ERR4 DB 0AH,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 其它考试类文档

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