- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编中文件的读写
汇编语言实验报告
(七)
班 级
姓 名: 南 征
学 号:信息与电子学院
实验七 文件的读写
实验目的
理解文件标记的概念,掌握利用文件标记读写文件的方法,学习使用文件指针读取文件。
实验要点
磁盘文件的读写有两种方法,一种称为文件控制块;另一种方法称为文件标记,前者在读写文件时首先要设定文件控制块,知名文件所在的当前磁盘的驱动器、文件名,同时还要制定所读写的文件所处的当前块号、当前记录号、记录长度等参量,此外还需要设置磁盘传输区。在读磁盘数据文件时,应先将磁盘上有关数据读入磁盘传输区,然后再传送至目的的内存区。在写磁盘数据文件时,要写入磁盘文件的数据也必须先送入磁盘传输区,然后再执行写操作。此种方法的缺点是不支持树形目录结构。目前常用的方法是利用文件标记读写文件,无论用什么方法读写文件,都要解决以下几个问题:
用户程序要告诉操作系统将要存取那个文件。
无论是从磁盘独处的数据,还是要写入磁盘的数据都必须存放在一个制定的内存缓冲区中,这个内存缓冲区叫数据传输区(DTA)。
在读一个磁盘文件之前,要先打开文件,然后才能将文件内容读入内存。而在读写一个文件之前,要先建立一个新文件名,再将内存中的内容写入磁盘。
在存取文件之后,特别是在写入文件之后,务必将此文件关闭。
利用文件标记读写文件的主要特点是:
通过建立文件、打开文件,将磁盘路径名、文件名转换为文件标记或件号,在以后读写文件的操作中均要与文件标记打交道。在一个系统中,可同时打开多个文件,并配置相应的文件标记。在利用文件标记读写磁盘文件是要掌握以下几个要点:
使用建立文件、打开文件系统功能之前,都必须将DS:DX指向驱动器名、路径名、文件名和以数值零为结尾的ASCIIZ字符串的首地址。
对于一个新文件要用3CH系统功能调用,建立文件。(如果不是新文件,此步骤可略)
已存在的文件则利用3DH系统功能调用,打开此文件。
如果文件建立、打开成功,则CF=0,并且在AX寄存器中返回文件标记。
在建立、打开文件成功之后,即可对文件进行读、写操作。如果要对文件进行读操作,则在打开文件之后,用3FH系统功能调用将文件读入数据缓冲区,调用前的入口参数是:文件标记存入BX,读入文件的字节数放入CX,数据缓冲区的起始地址存入DS:DX。调用完毕,AX返回实际读入的字节数。
读入数据缓冲区的文件,可利用40H系统功能调用将文件写入指定的磁盘。调用入口参数是:文件标记存入BX,要写入的字节数放入CX,DS:DX指向要写入数据缓冲区的首地址。调用结束后AX返回实际写入的字节数。如果AXCX,则表示磁盘空间已满,但系统不提示错误信息。
在读、写文件完成后,要用3EH系统功能调用关闭,释放原占有的文件号,并将缓冲区的数据最终写入磁盘。特别是对于写磁盘文件操作,在写入之后,必须要关闭文件,否则该数据文件将会丢失。
此外,特别要注意的是,在一个系统中不能同时建立两个以上的新文件。
在文件建立或打开后,文件指针的初始位置是指向文件首偏移为‘0’处,如果不想从文件首开始读、写文件,则可用系统功能调用42H移动文件指针的方法实现。调用前,将文件标记存入BX,所需移动偏移量的字节数(CX为高位部分)存放于CX:DX;调用后在DX:AX中返回读写指针移动后的位置。移动的方式有三种:
AL=0 指针从文件头移动到由CX:DX所指定的偏移量处;
AL=1 指针从当前位置移动到由CX:DX所指定的偏移量处;
AL=2 指针从文件尾移动到由CX:DX所指定的偏移量处;
本实验通过第1题,使同学掌握利用文件标记的方法,读写一个文件;第2题在掌握文件标记的使用之后,理解利用文件标记及文件指针将两个文件合并成一个文件的过程及技术要领。第3题进一步理解文件指针的三种移动方式的使用方法。
实验任务及步骤
用文件标记读写文件
编程实现,首先从键盘输入包括驱动器名、路径名、文件名及0的ASCIIZ字符串(即为指定路径下的一个文件),然后把这个文件打开并读入到内存数据缓冲区50000H(对应的逻辑地址为5000:0000)处,再换个文件名重新写入磁盘。
代码如下:
DATA SEGMENT
FILE1 DB 40
DB ?
DB 40 DUP(0)
FILE2 DB 40
DB ?
DB 40 DUP(0)
MSG1 DB INPUT SOURCE FILE:$
MSG2 DB INPUT NEW NAME:$
ENTER DB 0DH,0AH,$
BUF DB 100 DUP(0)
STACK SEGMENT
您可能关注的文档
- 爱心包裹具体活动实施方案.doc
- XX电气公司营销制度.doc
- 案件检查工作的程序和方法.doc
- 安徽省淮北市第五中学八年级物理下册 9.2 磁场学案.doc
- 按“国家标准”规定写文章-设计文件的规范化.ppt
- GIS_的案例应用分析.ppt
- 案例五 猪带绦虫病和猪囊尾蚴病.ppt
- A320系列飞机蓝液压系统工作原理及案例分析.ppt
- 材料科学基础第1-2章例题、作业题及其解答.doc
- PEdichang案例专题研究.ppt
- TSTIC 120083-2023 电化学储能电站电池系统数字化运维服务要求.pdf
- 病虫害防治工作总结.pdf
- TSTIC 120085-2023 船舶拖带服务规范.pdf
- 健身安全课件图片最新完整版本.pptx
- (新统编版)语文二年级下册 第六单元 大单元教学计划.docx
- TSTIC 120081-2023 港口与航道工程施工总承包服务规范.pdf
- THEBQIA 304-2024 型钢智能检测设备设计规范.pdf
- 健身房消防培训课件最新完整版本.pptx
- 广东省深圳市红山中学2024-2025学年高二(下)第一次段考语文试卷(含答案).docx
- 广东省深圳市建文外国语学校两学部2025届高三下学期二模物理试题(含答案).docx
文档评论(0)