汇编语言课程设计磁盘文件管理.docx
《汇编语言课程设计磁盘文件管理.docx》由会员分享,可在线阅读,更多相关《汇编语言课程设计磁盘文件管理.docx(17页珍藏版)》请在冰豆网上搜索。
![汇编语言课程设计磁盘文件管理.docx](https://file1.bdocx.com/fileroot1/2022-12/8/e34961b0-99af-44a2-bfca-de5c699b99f0/e34961b0-99af-44a2-bfca-de5c699b99f01.gif)
汇编语言课程设计磁盘文件管理
汇编语言课程设计报告
(2010--2011年度第2学期)
磁盘文件管理系统
专业
网络工程
学生姓名
赵燕
班级
B计算机092
学号
0910704228
指导教师
王志宏
完成日期
2011年6月22日
目录
1概述1
1.1课程设计目的1
1.2课程设计内容1
2系统需求分析1
2.1系统目标1
2.2主体功能1
2.3开发环境1
3系统概要设计1
3.1系统的功能模块划分1
3.2系统流程图1
4系统详细设计2
5测试4
5.1测试方案4
5.2测试结果5
6小结6
参考文献7
附录7
附录1源程序清单8
磁盘文件管理系统
1概述
1.1课程设计目的
在学完教学大纲规定的全部内容,完成所有实践环节的基础上,旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇编语言课程设计方法,提高分析问题,解决问题的综合应用能力。
学会查阅和汇编语言相关的规范,手册等技术资料。
能正确绘制和使用流程图。
掌握汇编语言程序设计和程序调试的基本技能,能进行基本的软件设计。
此课程设计中,通过对磁盘管理分段程序的设计,来实现键盘的输入,输出文件的读写的功能。
熟悉常用的系统功能调用和常用的算法实现。
如01H功能调用实现键盘输入并回显,09H的功能调用显示字符串,3CH的功能调用是建立文件,3DH的功能调用是打开文件,3EH的功能调用是关闭文件3FH是读取文件,40H功能调用是写入文件。
掌握基本子程序的调用和返回指令。
1.2课程设计内容
磁盘文件管理系统
2系统需求分析
2.1系统目标
功能菜单的编制;向磁盘文件中写入信息;从磁盘文件中读出信息并显示;退出程序
2.2主体功能
创建文件,向磁盘文件中写入信息,从磁盘文件中读出信息并显示,退出程序。
如果向磁盘中写入信息或者从磁盘中读取信息失败屏幕会显示打开文件错误的提示。
根据提示输入字符,如果输错可以返回并且从新输入。
2.3开发环境
Tasm
3系统概要设计
3.1系统的功能模块划分
1功能菜单的显示。
利用9H功能调用显示menu
movah,9
leadx,menu
int21h
2创建文件。
利用功能调用3CH建立文件。
DX=文件路径,CX=属性
3向磁盘文件中写入信息。
先利用功能调用3DH打开文件,再将从键盘输入的字符存入缓冲区,再从缓冲区写入文件,关闭文件。
4从磁盘文件中读出信息并显示。
先打开文件,在将文件内容存入缓冲区,再将缓冲区内容输出,关闭文件。
5退出程序。
3.2系统流程图
N
Y
Y
N
Y
N
N
N
Y
创建文件
N
Y
写入信息
N
Y
读取信息
N
Y
4系统详细设计
调用Dos21H功能实现文件操作
3CH:
创建文件DS:
DX=文件路径,CX=属性,返回文件号
3DH:
打开文件DS:
DX=文件路径,AL=模式
3EH:
关闭文件BX=文件号
3FH:
读取文件BX=文件号CX=字符数DS:
DX=缓冲区成功:
CF=0,失败:
CF=1,AX=错误码
40H:
写文件或设备BX=文件号DS:
DX=代写的数据地址CX=代写的字节数
在主程序中通过call指令调用子程序,在子程序中通过RET指令返回主函数。
缓冲区定义
buffer1db60,0,60dup(?
)
buffer2db60,0,60dup(?
)
提示信息定义
chosedb0dh,0ah,'Pleaseenterthedigitalfrom1-4!
',0dh,0ah,'$'
enterydb0dh,0ah,'Enterwhatyouwanttowritetothefile!
(Thelengthofthestringsisunder60)',0dh,0ah,'$'
str_ok1db,0dh,0ah,'Createfilesuccessfully!
',0dh,0ah,'$'
str_ok2db,0dh,0ah,'Writetofilesuccessfully!
',0dh,0ah,'$'
str_ok3db,0dh,0ah,'Readfromfilesuccessfully!
',0dh,0ah,'$'
str_ok4db,0dh,0ah,'Deletefilesuccessfully!
',0dh,0ah,'$'
str_error1db,0dh,0ah,'Createfileerror!
$'
str_error2db,0dh,0ah,'Openfileerror!
$'
str_error3db,0dh,0ah,'Writetofileerror!
$'
str_error4db,0dh,0ah,'Readfileerror!
$'
str_error5db,0dh,0ah,'Exitfromfileerror!
$'
5测试
5.1测试方案
输入字符1—4
1是创建文件,2是向磁盘文件中写入信息,3是从磁盘中读取信息,4是退出程序
5.2测试结果
运行程序后屏幕会出现菜单
1输入1创建文件
如果创建成功屏幕会显示createfilesuccessfully!
在D:
\IBMPC.TXT会创建名为IBMPC的TXT文本文件
如果创建失败屏幕会显示createfileerror!
2输入2向磁盘中写入信息
输入字符2屏幕会显示
输入字符sjaklwildacz在创建的文件中会显示
如果成功屏幕会显示writetofilesuccessfully!
如果失败屏幕会显示writetofileerror!
3输入3从磁盘文件中读出信息
如果读出信息成功,屏幕会显示readfromfilesuccessfully!
如果读出信息失败,屏幕会显示readfileerror!
4输入4退出程序
5输入其他字符,屏幕会提示pleaseenterthedigitalfrom1—4!
6如果没有先创建文件,就执行写入信息,读取信息的操作就会提示openfileerror!
6小结
这学期学习汇编语言这门课时,对它有了基本的了解和认识,觉得这门课并不难,反而很容易理解弄懂。
但本次课程设计使我充分了解到汇编语言在实际中的应用并不是那么容易。
在这次课程设计中让我认识到仅把课堂上的知识充分运用还是不够的。
程序设计不能仅仅停留在课本上,想要把程序做好,必须不断通过各种途径掌握更多更好的知识,最重要的是,要将获得的知识运用的实际编程中,要学以致用。
只有认真的去思考机器是如何进行逻辑思考才能更好的掌握理解它。
相信通过这次的课程设计,更让我深刻意识到自己在学习中的弱点,同时也找到了克服这些弱点的方法。
在以后的时间中,我应该利用更多的时间去上机实验,多编写程序,相信不久后我的编程能力会有很大的提高。
对于我学的这个专业来说,编写程序是最基本的,也是最重要的技能,然而本次课程设计的程序都不是自己编写的感觉到很遗憾,这次带着侥幸完成觉得很惭愧。
但我相信,在以后的学习和实践中,我一定会汲取这次课程设计的经验和教训,会把程序编写的更好。
参考文献
[1]花小朋,刘其明. 汇编语言程序设计教程[M].中国矿业大学出版社
[2]王元珍,曹忠升.80X86汇编语言程序设计[M].华中科技大学出版社
[3]沈美明,温冬婵.IBM-PC汇编语言程序设计[M].清华大学出版社
[4]王爽汇编语言[M].清华大学出版社
附录
附录1源程序清单
datasegment
menudb0dh,0ah,'****************************************',0dh,0ah
db'*menu*',0dh,0ah
db'*--------------------------------------*',0dh,0ah
db'*1.Createfile*',0dh,0ah
db'*2.Writetofile*',0dh,0ah
db'*3.Readfile*',0dh,0ah
db'*4.Quit*',0dh,0ah
db'*--------------------------------------*',0dh,0ah
db'*Choice(1--4)*',0dh,0ah
db'****************************************',0dh,0ah,'$'
pathnamedb'D:
\IBMPC.TXT',00
handledw?
buffer1db60,0,60dup(?
)
buffer2db60,0,60dup(?
)
huanhangdb'',0dh,0ah,'$'
chosedb0dh,0ah,'Pleaseenterthedigitalfrom1-4!
',0dh,0ah,'$'
enterydb0dh,0ah,'Enterwhatyouwanttowritetothefile!
(Thelengthofthestringsisunder60)',0dh,0ah,'$'
str_ok1db,0dh,0ah,'Createfilesuccessfully!
',0dh,0ah,'$'
str_ok2db,0dh,0ah,'Writetofilesuccessfully!
',0dh,0ah,'$'
str_ok3db,0dh,0ah,'Readfromfilesuccessfully!
',0dh,0ah,'$'
str_ok4db,0dh,0ah,'Deletefilesuccessfully!
',0dh,0ah,'$'
str_error1db,0dh,0ah,'Createfileerror!
$'
str_error2db,0dh,0ah,'Openfileerror!
$'
str_error3db,0dh,0ah,'Writetofileerror!
$'
str_error4db,0dh,0ah,'Readfileerror!
$'
str_error5db,0dh,0ah,'Exitfromfileerror!
$'
dataends
codesegment
assumecs:
code,ds:
data
mainprocfar
start:
movax,data
movds,ax
movax,0600h
callme
callchoice
ret
mainendp
meprocnear
movah,9
leadx,menu
int21h
meendp
choiceprocnear
movah,1
int21h
cmpal,31h
jenext1
cmpal,32h
jenext2
cmpal,33h
jenext3
cmpal,34h
jenext4
jmpback
next1:
callcreath
next2:
callentry
next3:
leadx,huanhang
movah,9
int21h
callread
next4:
movax,4c00h
int21h
next5:
movah,3eh
movbx,handle
int21h
movah,41h
leadx,pathname
int21h
jcerror1
back3:
movah,9
leadx,str_ok4
int21h
back:
movah,9
leadx,chose
int21h
callme
ret
choiceendp
creathprocnear
movah,3ch
leadx,pathname
movcx,0
int21h
jcerror1
movhandle,ax
jmpexit
error1:
movah,9
leadx,str_error1
int21h
jmpexit1
exit:
movah,9
leadx,str_ok1
int21h
exit1:
callchoice
creathendp
entryprocnear
movah,9
leadx,entery
int21h
leadx,buffer1
movah,0ah
int21h
subch,ch
movcl,buffer1+1
adddx,2
callwrith
ret
entryendp
writhprocnear
movah,3dh
leadx,pathname
moval,1
int21h
jcerror2
movhandle,ax
movah,40h
leadx,buffer1+2
movbx,handle
movcx,60
int21h
jcerror3
movah,3eh
movbx,handle
int21h
jcerror4
jmpback1
error2:
movah,9
leadx,str_error2
int21h
jmpexit2
error3:
movah,9
leadx,str_error2
int21h
jmpexit2
error4:
movah,9
leadx,str_error4
int21h
jmpexit2
back1:
movah,9
leadx,str_ok2
int21h
exit2:
callchoice
writhendp
readprocnear
movah,3dh
leadx,pathname
moval,0
int21h
jcerror5
movhandle,ax
movah,3fh
leadx,buffer2
movbx,handle
movcx,60
int21h
jcerror6
movah,9
leadx,buffer2
int21h
jcerror6
movah,3eh
movbx,handle
int21h
jcerror7
jmpback2
error5:
movah,9
leadx,str_error2
int21h
jmpexit3
error6:
movah,9
leadx,str_error4
int21h
jmpexit3
error7:
movah,9
leadx,str_error5
int21h
jmpexit3
back2:
movah,9
leadx,str_ok3
int21h
exit3:
callchoice
readendp
codeends
endstart
endmain