1、汇编语言课程设计磁盘文件管理汇编语言课程设计报告( 2013 年度第 1 学期)磁盘文件管理系统专业计算机技术与应用学生姓名*班级Z计算机111学号1160704116指导教师王志宏完成日期2013年1月3日目 录1 概 述 11.1 课程设计目的 11.2 课程设计内容 12 系统需求分析 12.1 系统目标 12.2开发环境 12.3主体功能 13 系统概要设计 13.1 系统的功能模块划分 13.2 系统流程图 14系统详细设计 25 测试 45.1 测试方案 45.2 测试结果 56 小结 6磁盘文件管理系统1 概 述 1.1 课程设计目的该课程设计是在学完教学大纲规定的全部内容,完成
2、所有实践环节的基础上,旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇编语言课程设计方法,提高分析问题,解决问题的综合应用能力。学会查阅和汇编语言相关的规范,手册等技术资料。能正确绘制和使用流程图。掌握汇编语言程序设计和程序调试的基本技能,能进行基本的软件设计。此课程设计中,通过对磁盘管理分段程序的设计,来实现键盘的输入,输出文件的读写的功能。熟悉常用的系统功能调用和常用的算法实现。如3CH的功能调用是建立文件,3EH的功能调用是关闭文件3FH是读取文件,01H功能调用实现键盘输入并回显,09H的功能调用显示字符串, 3DH的功能调用是打开文件, 40H功能调用是写入文件。掌握基本子程序的
3、调用和返回指令。1.2 课程设计内容设计一个磁盘文件管理系统 要求:功能菜单的编制;向磁盘文件中写入信息;从磁盘文件中读出信息并显示2 系统需求分析2.1 系统目标 功能菜单的编制; 向磁盘文件中写入信息; 从磁盘文件中读出信息并显示; 退出程序2.2 开发环境Tasm2.3主体功能创建文件,向磁盘文件中写入信息,从磁盘文件中读出信息并显示,退出程序。如果向磁盘中写入信息或者从磁盘中读取信息失败屏幕会显示打开文件错误的提示。根据提示输入字符,如果输错可以返回并且从新输入。3 系统概要设计3.1 系统的功能模块划分1功能菜单的显示。利用9H功能调用显示menu mov ah,9 lea dx,m
4、enu int 21h2创建文件。利用功能调用3CH建立文件。DX=文件路径,CX=属性3 向磁盘文件中写入信息。先利用功能调用3DH打开文件,再将从键盘输入的字符存入缓冲区,再从缓冲区写入文件,关闭文件。4 从磁盘文件中读出信息并显示。先打开文件,在将文件内容存入缓冲区,再将缓冲区内容输出,关闭文件。5 退出程序。3.2 系统流程图NYYNYNNNY创建文件NY写入信息NY读取信息NY4系统详细设计 磁盘文件管理的具体代码如下: 源程序清单data segmentmenu db 0dh,0ah, *,0dh,0ah db * menu *,0dh,0ah db *-*,0dh,0ah db
5、* 1.Create file *,0dh,0ah 创建文件 db * 2.Write to file *,0dh,0ah 写入文件db * 3.Read file *,0dh,0ah 读取文件 db * 4.Quit *,0dh,0ah 停止程序 db *-*,0dh,0ah db * Choice(1-4) *,0dh,0ah db *,0dh,0ah,$ pathname db D:IBM PC.TXT,00 ;创建文件路径 handle dw ? ;handle用于存放选择的数 buffer1 db 60,0,60 dup(?) ;数据缓冲区 buffer2 db 60,0,60 du
6、p(?) huanhang db ,0dh,0ah,$ ;定义换行变量 chose db 0dh,0ah,Please enter the digital from 1-4!,0dh,0ah,$;存放提示信息 entery db 0dh,0ah,Enter what you want to write to the file!(The length of the strings is under 60),0dh,0ah,$;存放提示信息;以下都是提示信息 str_ok1 db ,0dh,0ah,Create file successfully!,0dh,0ah,$ str_ok2 db ,0d
7、h,0ah,Write to file successfully!,0dh,0ah,$ str_ok3 db ,0dh,0ah,Read from file successfully!,0dh,0ah,$ str_ok4 db ,0dh,0ah,Delete file successfully!,0dh,0ah,$ str_error1 db ,0dh,0ah,Create file error!$ str_error2 db ,0dh,0ah,Open file error!$ str_error3 db ,0dh,0ah,Write to file error!$ str_error4 d
8、b ,0dh,0ah,Read file error!$ str_error5 db ,0dh,0ah,Exit from file error!$ data ends code segment assume cs:code,ds:data main proc far start: mov ax,data mov ds,ax mov ax,0600h call me call choice ret main endp me proc near ;me子程序功能,显示菜单 mov ah,9 ;9号功能调用 lea dx,menu int 21h me endp choice proc near
9、;choice子程序功能,从键盘中输入选择的数据 mov ah,1 ;1号功能调用,输入并显示一个字符 int 21h cmp al,31h ;判断输入的数是否为1 je next1 ;若为1,则跳到next1 cmp al,32h ;判断输入的数是否为2 je next2 ;若为2,则跳到next2 cmp al,33h ;判断输入的数是否为3 je next3 ;若为3,则跳到next3 cmp al,34h ;判断输入的数是否为4 je next4 ;若为4,则跳到next4 jmp back ;否则,返回next1: call creath ;调用创建子程序next2: call en
10、try ;调用输入子程序next3: lea dx,huanhang ;换行 mov ah,9 int 21h call read ;调用读子程序next4: mov ax,4c00h ;退出程序 int 21hnext5: mov ah,3eh mov bx,handle int 21h mov ah,41h lea dx,pathname int 21h jc error1back3:mov ah,9 lea dx,str_ok4 int 21hback: mov ah,9 lea dx,chose int 21h call me retchoice endpcreath proc nea
11、r mov ah,3ch ;调用3CH功能,创建文件 lea dx,pathname ;设置创建文件的路径 mov cx,0 ;设置文件属性 int 21h jc error1 ;错误1 mov handle,ax ;从键盘输入的数据付给handle jmp exit ;跳转到exiterror1: mov ah,9 lea dx,str_error1 ;创建文件失败,显示错误信息提示1 int 21h jmp exit1exit: mov ah,9 ;显示成功创建文件的提示信息 lea dx,str_ok1 int 21hexit1: call choice ;从新选择creath endp
12、entry proc near mov ah,9 lea dx,entery ;显示输入的内容 int 21h lea dx,buffer1 mov ah,0ah ;10号功能调用,显示缓冲区字符串 int 21h sub ch,ch mov cl,buffer1+1 add dx,2 call writh retentry endpwrith proc near ;向文件写入内容 mov ah,3dh ;3dh功能调用 lea dx,pathname mov al,1 ;1号功能调用 int 21h jc error2 ;写入信息失败,转到error2 mov handle,ax mov a
13、h,40h ;40H功能调用写入文件。 lea dx,buffer1+2 ;除去前面的空格 mov bx,handle mov cx,60 int 21h jc error3 mov ah,3eh ;3EH的功能调关闭文件 mov bx,handle int 21h jc error4 jmp back1error2: mov ah,9 lea dx,str_error2 ;显示错误提示信息2 int 21h jmp exit2 error3: mov ah,9 lea dx,str_error3 ;显示错误提示信息3 int 21h jmp exit2error4: mov ah,9 lea
14、 dx,str_error4 ;显示错误提示信息3 int 21h jmp exit2back1: mov ah,9 lea dx,str_ok2 ;返回提示信息2 int 21hexit2: call choicewrith endpread proc near mov ah,3dh ;3DH的功能调用是打开文件 lea dx,pathname mov al,0 int 21h jc error5 ;打开失败,转到error5 mov handle,ax mov ah,3fh ;3FH是读取文件 lea dx,buffer2 mov bx,handle mov cx,60 int 21h j
15、c error6 ;跳到error6 mov ah,9 ;9号功能调用 lea dx,buffer2 int 21h jc error6 ;跳到error6 mov ah,3eh ;3EH的功能调关闭文件 mov bx,handle int 21h jc error7 jmp back2error5: mov ah,9 lea dx,str_error2 ;;显示提示信息 int 21h jmp exit3error6: mov ah,9 lea dx,str_error4 ;;显示提示信息 int 21h jmp exit3error7: mov ah,9 lea dx,str_error5
16、 ;;显示提示信息 int 21h jmp exit3 back2: mov ah,9 ;显示提示信息 lea dx,str_ok3 int 21hexit3: call choiceread endpcode ends end start end main 5 测试5.1 测试方案输入字符141是创建文件,2是向磁盘文件中写入信息,3是从磁盘中读取信息,4是退出程序5.2 测试结果运行程序后屏幕会出现菜单1 输入1创建文件如果创建成功屏幕会显示create file successfully!在D:IBM PC. TXT会创建名为IBM PC的TXT文本文件如果创建失败屏幕会显示create
17、 file error!2 输入2向磁盘中写入信息输入字符2屏幕会显示输入字符sjaklwildacz在创建的文件中会显示如果成功屏幕会显示write to file successfully!如果失败屏幕会显示write to file error!3 输入3从磁盘文件中读出信息如果读出信息成功,屏幕会显示read from file successfully!如果读出信息失败,屏幕会显示read file error!4 输入4退出程序5 输入其他字符,屏幕会提示please enter the digital from 14!6 如果没有先创建文件,就执行写入信息,读取信息的操作就会提示
18、open file error!6 小结 这学期初步接触汇编语言,最开始时很是懵懂,很理解不透程序。不过经过长达一学期的学习,对汇编语言也了基本的了解,但仍是很浅显的感觉。在这学期只有几次的实验机会中对打上级操作的过程仍是不太理解,不太熟练。这次课程设计也给了我们进一步加强汇编学习的机会。 这次汇编课程设计有5个题目,我被分到的是第一个课程题目,设计一个磁盘管理文件,这个磁盘管理文件对于我们刚学汇编的学生来说还是有点难度的,不过老师给了我们一些参考代码。自己在上网查一些资料,请教老师,在和同一个课程的同学讨论讨论,最终也能马马虎虎做出程序。 所以,总体来说这次课程设计还是有不小收获的。不仅在学习汇编方面有了更进一步的提高。而且与同学老师的交流,自主学习能力也有了提高。在得到这些提高的同时,也认识到了自己的缺点。不够细心,同时有不够有耐心,所以得好好改正