ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:133.99KB ,
资源ID:10907310      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10907310.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(读写磁盘文件.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

读写磁盘文件.docx

1、读写磁盘文件读写磁盘文件1 设计任务及要求分析1.1 设计任务及要求要求:建立一个文件,从文件中读255字节,显示文件内容,操作成功后显示提示GOOD,操作失败后显示提示BAD,按Q退出程序。要求完成主要任务:(1) 方案比较及认证说明(2) 系统原理阐述(3) 硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明(4) 软件设计课题需要说明:软件思想,流程图,源程序及程序注释(5) 调试记录及结果分析(6) 总结(7) 参考资料(8) 附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图1.2 设计任务分析由要求可知,本题目是一道文件读取的题目,程序主要是分两步走:1写文件:建立一

2、个文本文件,写入内容,若操作成功则显示“GOOD”,若失败则显示“BAD”,按“Q”可退出程序。2. 读文件:从建立的文件中读取255个字节并显示内容,若操作成功则显示“GOOD”,若失败则显示“BAD”,按“Q”可退出程序。2 方案比较及认证2.1 写文件按要求需要建立一个文件,向文件中写入内容, 程序如下:mov ax , datamov ds , ax ;目录路径名的ASCII字符串的段地址mov dx , offset file ;目录路径名的ASCII字符串的偏移地址mov cx , 0mov ah , 3ch ;调用功能3CH创建新的文件int 21h jc error ;创建出错

3、,转error处mov handle , ax ;保存文件号mov bx , ax ;bx文件控制字mov cx , 255 ;cx要写的字节数mov dx , offset buf ;dx内存缓冲区的偏移地址mov ah , 40h ;调用功能40H实现内存缓冲区中的数据写入到磁盘文件或设备int 21h ;向文件中写入255个字节内容2.2 读文件打开创建的文件并读取文件中的前255个字符的内容,程序如下:mov ax , datamov ds , ax ;目录路径名的ASCII字符串的段地址mov dx , offset file ;目录路径名的ASCII字符串的偏移地址mov al ,

4、 0mov ah , 3dh ;调用功能3DH打开指定文件int 21h jc error ;若打开出错,转errormov handle , ax ;保存文件号mov bx , axmov cx , 255 ;要读取的字节数mov dx , offset buf ;内存缓冲区的偏移地址mov ah , 3fh ;调用功能3FH从文件中读255字节bufint 21hjc error ;若读出错,转errormov bx , ax ;实际读到的字符数送入bxmov bufbx , $ ;在文件结束处放置一“$”符mov dx , offset bufmov ah , 9h ;DOS功能调用输出

5、一串字符int 21h ;显示文件内容mov bx , handlemov ah , 3eh ;调用功能3EH关闭文件int 21h 2.3 方案比较文件读取有4种方式:顺序存取方式、随机存取方式、随即分块存取方式以及文件代号式磁盘存取方式。 相比于其它三种方式,文件袋好事磁盘存取方式中有关文件的各种信息都包括在DOS中,对用户时透明的,在处理指定文件时,必须使用一个完整的路径名。对各种错误采取了更统一的处理方法,操作过程中,AX中回送错误代码,这些错误代码对所有的代号式存取功能都是相同的,为用户进行分析提供了方便。3 系统实现的原理说明3.1 程序设计思想由设计题目“建立一个文件,从文件中读

6、255字节,显示文件内容,操作成功后显示提示GOOD,操作失败后显示提示BAD,按Q退出程序。”可知大致可分两步走,建立文件,读取并显示文件内容。通过查阅资料了解到文件代号式存取方式的方法,通过DOS中断调用21H完成。建立磁盘文件:写一个新文件或重写一个旧文件,首先要建立文件并赋给它一个属性。如果DOS发现要建立的文件已经存在,那么原来的文件就被破坏。建立文件的功能调用是3CH。写磁盘文件是利用功能调用40H,要写入的字数放在CX中,输入缓冲区的地址放在DX中。读取磁盘文件:读文件或设备的功能调用是3FH,要求先把文件打开取得文件代号,然后按照制定的字节数从磁盘把文件读出,读入内存中预先定义

7、好的数据缓冲区。如果读入的字节数大于缓冲区空间,那么这些多余的数据将送到程序所占空间之上的存储器中。打开文件操作的功能调用是3DH,需要检查文件名是否合法,文件是否有效。3.2 程序中用到的DOS功能调用(1) 9H:在标准输出设备输出一串字符。调用:AH=0AH DS=输入缓冲区的段地址 DX=输入缓冲区的偏移地址(2) 3CH:创建新的文件或将磁盘上已存在的文件的长度变成0。 调用:AH=3CH DS=驱动器和目录路径名的ASCII字符串的段地址 DX=驱动器和目录路径名的ASCII字符串的偏移地址(3) 3DH:打开指定的文件。 调用:AH=3DH DS=驱动器和目录路径名的ASCII字

8、符串的段地址 DX=驱动器和目录路径名的ASCII字符串的偏移地址(4) 3EH:关闭指定的文件。 调用:AH=3EH BX=打开或创建时返回的文件控制字(5) 3FH:将指定的文件或设备的数据读入内存缓冲区中。 调用:AH=3FH BX=文件控制字 DS=内存缓冲区的段地址 DX=内存缓冲区的偏移地址 CX=要读取的字节数(6) 21H:将当前块和当前记录所表示的记录读入磁盘传送地址。 调用:AH=21H(7) 40H:将内存的缓冲区中的数据写入到磁盘文件或设备。 调用:AH=40H BX=文件控制字 DS=内存缓冲区的段地址 DX=内存缓冲区的偏移地址 CX=要写的字节数(8) 4CH:结

9、束当前的进程,控制返回给调用该进程的程序。 调用:AH=4CH AL=返回值4 程序流程图4.1 写文件程序流程图 建立文件思路为:输入文件名创建文件判断文件是否存在写入文件内容关闭文件图4-1 写文件程序流程图4.2 读文件程序流程图读取文件思路为:找到并打开指定位置文件读取文件显示文件前255个字符关闭文件图4-2 读文件程序流程图5 程序设计结果显示5.1 写文件程序运行结果程序运行成功显示“GOOD”,按“Q”或“q”退出。图5-1 写文件程序运行结果5.2 读文件程序运行结果程序运行成功显示文件前255个字符并显示“GOOD”,按“Q”或“q”退出。图5-2 读文件程序运行结果6 调

10、试记录与分析本程序应用的主要是DOS中断调用21H里面的功能,如9H、3CH、3DH等。由于以前接触较少的原因,使用不熟练,出现了一些问题。经过详细的对课本和图书馆借来的资料的了解,以及同学的帮助最终顺利的完成了程序。通过图书馆以及上网查阅的一些资料大致了解了磁盘文件读写的框架程序的编写。完成写文件程序的主要部分,运行的时候出现问题。运行完成程序自动退出,未能按要求实现“按Q或q退出”。查阅相关资料以后知道可以在程序开始定义“exit_message”,最后加上1H功能调用可以实现。完成读文件程序的内容后运行程序,运行出错显示了“BAD”,查找原因。后来发现是写入内容不足255个字符,无法读出

11、,故出错。后来在写文件程序里改了写入内容够了255个字符以后运行成功。通过不断的调试、运行,我认识到编程序是需要耐心与细心才能完成的事情,磨练了我们的毅力。7 总结课程设计的过程是综合运用所学知识的过程。要求将课本中分布独立学习的知识,在设计中综合加以应用,从而对所学知识有更进一步的理解、巩固、和发展,并掌握在理论学习时忽略的细节和要点。通过课程设计,提高学生综合运用所学知识分析问题、解决问题的能力,同时,通过查找、运用设计资料,完成工程设计所必备的基本训练。本次的课程设计的题目是“磁盘文件读取”,通过老师给的资料去图书馆查阅书籍,找到了完成该题目的框架程序,就是利用DOS功能调用21H里面的

12、几种功能实现。同时,通过查阅资料还了解了一些其他的汇编相关的知识,强化了自己的理论知识。整个课程设计过程应该说还是比较顺利的,框架程序确定后,回来在电脑上一步步运行,调试,知道达到要求,可以实现预订的效果。过程中,遇到一些困难,都是通过查阅资料或请教同学解决的,无形中加深了同学之间的感情,也提升了自己的能力。完成了课程设计,不仅仅有一种完成作业的快感,更是为自己学习的东西可以在实践中应用感到兴奋。一次次的课程设计,不进强化了我们的理论知识,加强了我们的动手能力,让我们更深入的了解理论结合实践的重要性,不能只局限于纸上写写画画,这对我们以后的学习、工作都有好处。总之,课程设计是我们的一门必修课,

13、通过了它,我们以后的路才会更顺畅。8 参考文献1 沈美明、温冬婵编著.IBMPC汇编语言程序设计(第二版).北京:清华大学出版社.20052 索梅、郑甫京、张鹿编著.80386/80286汇编语言程序设计.北京:清华大学出版社.19943 周佩玲、彭虎、傅忠谦编著.微机原理与接口技术.北京:电子工业出版社.20054 齐志儒、高福祥编著.汇编语言程序设计.沈阳:东北大学出版社.20015 冯萍、史新福编著.汇编语言与接口技术.北京:机械工业出版社.2002附录:源程序及注释附录一:写文件源程序及注释data segment ;数据段开始file db e:R_Hand.txt , 0 ;创建文

14、件的文件名buf db Traveling to another country is often a welcome adventure.In this unit,however,we meet people who take up the challenge of leaving home to live in another country.First,we discover the problems faced by teenagers from Brazil who travel to America to study.Next,we read about a young girl

15、on her first train ride across Canada as she travels to her new home.Finally,we meet a women who learns the meaning of a sunny morning on her first day in a new land.These stories demonstrate how things are not always as easy as they look the grass is not always greener on the other side. ;写到文件中去的内容

16、error_message db 0ah , BAD ! , $ ;出错时的提示exit_message db 0dh,0ah,Press Q or q to exit,or others tocontinue!,0dh,0ah,$ ;按“Q”或“q”退出message db 0ah , GOOD !$ ;操作成功后的提示handle dw ? ;保存文件号data ends ;数据段结束code segment ;代码段开始 assume cs:code , ds:datastart: mov ax , data mov ds , ax mov dx , offset file ;目录路径名

17、的字符串偏移地址 mov cx , 0 ;文件属性 mov ah , 3ch ;调用功能3CH建立新的文件 int 21h jc error ;创建出错,转error处 mov handle , ax ;保存文件号 mov bx , ax ;bx文件控制字 mov cx , 255 ;cx要写的字节数 mov dx , offset buf ;dx内存缓冲区的偏移地址 mov ah , 40h ;调用功能40H实现内存缓冲区中的数据写入到磁盘文件或设备 int 21h ;向文件中写入255个字节内容 jc error ;写出错,转error处 mov bx , handle mov ah ,

18、3eh ;调用功能3EH关闭文件 int 21h jc error ;关闭文件出错,转error处 mov dx , offset message mov ah , 9h ;调用功能9H显示输出字符 int 21h ;操作成功后显示提示 jmp end1error: mov dx , offset error_message mov ah , 9h ;调用功能9H显示输出字符 int 21h ;显示错误提示end1: mov dx,offset exit_message mov ah,9h ;调用功能9H显示输出字符 int 21h mov ah,1h ;输出显示al的内容 int 21h c

19、mp al,Q jz over cmp al,q jz over jmp start ;退出显示 over: mov ah , 4ch ;调用功能4CH结束当前的进程,返回主程序 int 21hcode ends ;代码段结束 end start附录二:读文件源程序及注释data segment ;数据段开始file db e:R_Hand.txt , 0 ;文件名buf db 256 dup(0) ;文件内容暂存区error_message db 0ah , BAD! , $ ;出错时的提示message db 0ah , GOOD!,$ ;操作成功后的提示exit_message db 0

20、dh,0ah,Press Q or q to exit,or others to continue!,0dh,0ah,$ ;按“Q”或“q”退出handle dw ? ;保存文件号data ends ;数据段结束code segment ;代码段开始 assume cs:code , ds:datastart: mov ax , data mov ds , ax ;目录名段地址 mov dx , offset file ;目录名偏移地址 mov al , 0 ;表示为读取而打开文件 mov ah , 3dh ;调用功能3DH打开文件 int 21h jc error ;若打开出错,转error

21、 mov handle , ax ;保存文件号 mov bx , ax mov cx , 255 ;要读取的字节数 mov dx , offset buf ;内存缓冲区的偏移地址 mov ah , 3fh ;调用功能3FH从文件中读255字节 int 21h jc error ;若读出错,转error mov bx , ax ;实际读到的字符数送入bx mov bufbx , $ ;在文件结束处放置一“$”符 mov dx , offset buf mov ah , 9h int 21h ;显示文件内容 mov bx , handle mov ah , 3eh int 21h ;关闭文件 mo

22、v dx , offset message mov ah , 9h int 21h ;操作成功后显示提示 jnc end1 ;若关闭过程无错,转到end1处返回doserror: mov dx , offset error_message mov ah , 9h int 21h ;显示错误提示end1: mov dx,offset exit_message mov ah,9h int 21h mov ah,1h ;输出显示al的内容 int 21h cmp al,Q jz over cmp al,q ;退出显示 jz over jmp start over: mov ah , 4ch ;结束当前的进程,返回主程序 int 21hcode ends ;代码段结束 end start

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1