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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

磁盘文件读写程序设计.docx

1、磁盘文件读写程序设计学 号课 程 设 计题 目磁盘文件读写程序设计学 院自动化专 业自动化班 级1102姓 名指导教师张丹红2014年1月14日课程设计任务书学生姓名: 专业班级: 自动化1102 指导教师: 张 丹 红 工作单位: 自动化学院 题 目:磁盘文件读写程序设计 初始条件:带有编辑器、汇编程序、连接程序和调试程序的电脑一台。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)采用汇编语言设计一个读写磁盘文件的程序。建立一个文件,向文件中写入32个字节内容并读出,操作成功后显示提示OK,按Q退出程序。(1)设计任务及要求分析(2)方案比较及认证说明(3)

2、系统原理阐述(4)软件设计课题需要说明:软件思想,流程图,源程序及程序注释(5)调试记录及结果分析(6)总结(7)参考资料(8)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图时间安排:1月6 日 1月 8日: 收集资料,方案选择1月9 日 1月12日: 整体设计,程序编写1月13日1月16日: 调试程序,报告撰写1月17日: 交设计报告,程序演示,答辩指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日摘 要汇编语言是面向机器的程序设计语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址,如此就增强了程序的可读性并且降低了编写难度,象这

3、样符号化的程序设计语言就是汇编语言,因此亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,还要由汇编程序或者叫汇编语言编译器转换成机器指令。汇编程序将符号化的操作代码组装成处理器可以识别的机器指令,这个组装的过程称为组合或者汇编。因此,有时候人们也把汇编语言称为组合语言。汇编语言是一种功能性很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。汇编语言,作为一门语言,应对与高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。高级汇编器如MASM就为我们写程序提供了很多类似于高级语言的特征,比如结构化、抽象等。在这样的环境中编写的汇编程序,有很大

4、一部分是面向汇编器的伪指令,已经类同于高级语言。现在的汇编环境已经如此高级,即使全部用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言的长处。汇编语言的长处在于编写高效而且需要对机器语言精确控制的程序。此次课设将使用汇编语言和MASM软件设计一个对磁盘文件进行读写的程序。关键词:汇编 MASM 磁盘读写 编译 程序设计1 设计任务及要求分析1.1设计任务及要求1.2设计任务分析2 方案比较及认证说明2.1写文件2.2读文件2.3方案比较3系统实现原理说明3.1程序设计思想3.2程序中用到的DOS功能调用4程序流程图4.1写文件程序流程图4.2读文件程序流程图5程序设计结果显示

5、5.1写文件程序运行结果5.2读文件程序运行结果6 调试记录与分析心得体会参考文献附录一:写文件源程序附录二:读文件源程序磁盘文件读写程序设计1设计任务及要求分析1.1设计任务及要求设计要求:采用汇编语言设计一个读写磁盘文件的程序。建立一个文件,向文件中写入32个字节内容并读出,操作成功后显示提示OK,按Q退出程序。设计任务:(1)设计任务及要求分析(2)方案比较及认证说明(3)系统原理阐述(4)软件设计课题需要说明:软件思想、流程图、源程序及程序注释(5)调试记录及结果分析(6)总结(7)参考资料(8)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图1.2设计任务分析由要求可知,本题

6、目是一道文件读取的题目,程序主要是分两步走:(1)写文件:建立一个文本文件,写入内容,若操作成功则显示“OK”,若失败则显示“BAD”,按“Q”可退出程序。(2)读文件:从建立的文件中读取32个字节并显示内容,若操作成功则显示“OK”,若失败则显示“BAD”,按“Q”可退出程序。2方案论证及说明2.1写文件按要求需要建立一个文件,向文件中写入内容, 程序如下:mov ax , datamov ds , ax ;目录路径名的ASCII字符串的段地址mov dx , offset file ;目录路径名的ASCII字符串的偏移地址mov cx , 0mov ah , 3ch ;调用功能3CH创建新

7、的文件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 ;向文件中写入32个字节内容2.2读文件打开创建的文件并读取文件中的前32个字符的内容,程序如下:mov ax , datamov ds , ax ;目录路径名的ASCII字符串的段地址mov dx , offset file ;目录路径名

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

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

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

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

12、录路径名的ASCII字符串的段地址 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=要写的字

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

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

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

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

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

18、untry is good ;写到文件中去的内容error_message db 0ah , BAD ! , $ ;出错时的提示exit_message db 0dh,0ah,Press Q or q to exit,or others to continue!,0dh,0ah,$ ;按“Q”或“q”退出message db 0ah , OK !$ ;操作成功后的提示handle dw ? ;保存文件号data ends ;数据段结束code segment ;代码段开始 assume cs:code , ds:datastart: mov ax , data mov ds , ax mov

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

20、bx , handle mov ah , 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

21、 ;输出显示al的内容 int 21h cmp 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 33 dup(0) ;文件内容暂存区error_message db 0ah , BAD! , $ ;出错时的提示message db 0ah , OK!,$ ;操作成功后的提示e

22、xit_message db 0dh,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 err

23、or ;若打开出错,转error mov handle , ax ;保存文件号 mov bx , ax mov cx , 32 ;要读取的字节数 mov dx , offset buf ;内存缓冲区的偏移地址 mov ah , 3fh ;调用功能3FH从文件中读32字节 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 in

24、t 21h ;关闭文件 mov 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本科生课程设计成绩评定表姓 名性 别男专业、班级自动化1102课程设计题目:磁盘文件读写程序设计课程设计答辩或质疑记录:成绩评定依据:评 定 项 目评分成绩1)态度认真、学习刻苦、遵守纪律(10分)2)查阅资料能力、参考文献充分(10分)3)系统设计(包括:实现原理、方案说明、框图流程)(20分)4)硬件、软件调试结果(25分)5)设计说明书规范,层次分明,逻辑清晰(10分)6)答辩(25分)总分:最终评定成绩(以优、良、中、及格、不及格评定) 指导教师签字: 年 月 日

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

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