汇编课设程序报告录入学生身高体重等.docx
《汇编课设程序报告录入学生身高体重等.docx》由会员分享,可在线阅读,更多相关《汇编课设程序报告录入学生身高体重等.docx(11页珍藏版)》请在冰豆网上搜索。
![汇编课设程序报告录入学生身高体重等.docx](https://file1.bdocx.com/fileroot1/2023-1/30/c56ed7cd-b1e2-42a3-ba7d-9345a427b2e6/c56ed7cd-b1e2-42a3-ba7d-9345a427b2e61.gif)
汇编课设程序报告录入学生身高体重等
华北科技学院
课程设计说明书
专业:
网络工程
课程名称:
汇编语言班级:
网络B093
姓名:
李金栋学号:
200907024324
设计题目:
个人文档管理
设计时间:
2011.12.5至2011.12.16
评语:
________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
评阅成绩:
____评阅教师:
_李冬艳____
课程设计报告的要求
1、需求分析
描述问题。
简述课题要解决的问题是什么,有什么要求和限制条件。
2、总体设计(程序设计组成框图、流程图)
3、详细设计(模块功能说明(如函数功能、入口及出口参数说明,过程调用关系描述等))
4、调试与测试:
调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施
5、测试结果,用几组测试数据进行测试算法设计的正确性。
6、附录。
源程序清单和结果:
源程序要加注释。
结果要包括测试数据和运行结果。
《汇编语言》课程设计
一需求分析
建立一个输入个人信息、显示个人信息的程序、实现菜单化操作,子母i、l、q、对应插入信息、显示列表、退出程序的功能。
程序开始时,先建立判断是否存在文件,如果不存在,就创立文件。
然后随便输入i,l,q中任意一个字母(可以是大写),然后跳到相应的子程序,输入i时,跳到输入的子程序,输入相应的数据,保存到文件里。
当输入l时,保存在文件里的数据就会显示,每个学生的信息显示一行。
当输入q时,直接关闭文件,程序结束
二总体设计
1功能结构图设计
2模块简介
依据程序的功能模块的划分,各模块定义如下:
(1)输入个人信息
模块名:
insert;
模块描述:
通过此模块可以向某个人的信息。
并且将学生信息写入指定的txt文件。
添加有误则弹出相应信息提示,并实现再次输入此项目。
(2)显示个人信息
模块名:
list_all;
模块描述:
显示所有文件中存储的个人信息。
(3)打开创建文件
模块名:
open_create;
模块描述:
没有指定的txt文件时创建文件、文件存在时打开文件,为写入数据做准备。
(4)关闭文件
模块名:
closef;
模块描述:
关闭文件。
三详细设计
1、主过程的算法设计:
显示菜单及运用选择操作,调用各个过程,最后退出程序,
主要代码
start:
movax,condata
moves,ax
movax,vardata
movds,ax
pushds
;--------------显示菜单-------------------
movax,es
movds,ax
movdx,offsets4;显示菜单
movah,9h
int21h
popds
;----------------选择命令------------------
cmp_l1:
movah,01h
int21h
cmpal,'l'
jnzcmp_L2
calllist_all
jmpstart
cmp_L2:
cmpal,'L'
jnzcmp_i1
calllist_all
jmpstart
cmp_i1:
cmpal,'i'
jnzcmp_I2
callinsert
jmpstart
cmp_I2:
cmpal,'I'
jnzcmp_q1
callinsert
jmpstart
cmp_q1:
cmpal,'q'
JNEcmp_Q2
jeclosef;直接退出
cmp_Q2:
cmpal,'Q'
jeclosef
exit:
movax,4c00h
int21h
系统的程序流程图
2、子过程的算法设计
(1)插入信息(包含纠错)
该过程的程序流程图.
由于输入信息的子程序中很多算法类似相同,有些纠错方法相同,下面只介绍姓名程序段的流程图,对于输入数字的纠错,只是比较的对象变化,相应的循环次数发生相应变化,这和数据单元的预先定义有关。
(2)显示子程序使用的是类似输入子程序的流程。
读取姓名、年龄、性别等采取的循环体与输入部分一致,在此不值得赘述。
四调试与测试
调试程序的程序段(举例)
init:
;memoryinitialize初始化
movnames[bx],0
incbx
cmpbx,20
jlinit
movbx,0
lp:
;从键盘接受数据
movah,1
int21h
cmpal,0dh
jzinext
cmpal,0ah
jzinext
movnames[bx],al
incbx
cmpbx,10
jllp
以上是未调试之前的代码,对应输入子程序的姓名输入,运行的相应结果如下
修改后代码及截图
start1:
movdx,offsetmess_n;增加部分
movah,9h
int21h
movbx,0
init:
;memoryinitialize初始化
movnames[bx],0
incbx
cmpbx,20
jlinit
movbx,0
;从键盘接受数据
lp:
movah,1
int21h
cmpal,0dh
jzinext
cmpal,0ah
jzinext
cmpal,61h;;;;;;;;;;;;;;;;;纠错;增加部分
jberror1;;;;;;;;;;;;;;;;;;增加部分
cmpal,7ah
jaerror1;;;;;;;;;;;;;;;;;增加部分
movnames[bx],al
incbx
cmpbx,10
jllp
error1:
;增加部分
leadx,s5;;;;;;;提示
movah,9
int21h
jmpstart1
截图
后边相应的改动于此类似,不在赘述。
五测试结果
1、程序运行结果如下所示。
上图是输入的情况,表示程序已经实现了纠错。
2、显示列表、键入q就退出程序、键入任意键后退出DOS。
六感想:
这个程序是在原有程序的基础上修改得到的,原有程序没有输入的纠错功能,自己通过思考和同学讨论,对程序增加了纠错功能的提示和相应的跳转指令,实现当输入不合法时,可以返回相应的项目重新输入,这保证了程序的健壮性,跳转的位置设置很重要,一个程序段实现了,其余的便照搬可以了。
程序定义了一个
宏,宏中使用了bios中断,使屏幕上卷。
宏插入的位置,是经过很多次尝试,最终确定下来的。
通过这次实验,更加理解了宏的调用,和分支、循环程序的设计,尤其是数据段的定义,和写入文件的设计方法,改变了我以前依靠数组存储的编程思想。
总之,这个成绩程序已经完成了题目所要求的功能,并实现了纠错,算是一个比较完整的程序了。