汇编课程设计个人档案管理文件.docx
《汇编课程设计个人档案管理文件.docx》由会员分享,可在线阅读,更多相关《汇编课程设计个人档案管理文件.docx(16页珍藏版)》请在冰豆网上搜索。
汇编课程设计个人档案管理文件
华北科技学院
课程设计说明书
课程名称:
汇编语言
班级:
计算机B08-1姓名:
胡诗招
学号:
200807014102
设计题目:
个人档案管理文件
设计时间:
2010年6月23号_至2010年7月2号_
指导教师:
______李冬艳____________
评语:
_________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
评阅成绩:
____评阅教师:
_____
1、课程设计目的
进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。
2、课程设计要求
1.要求编写并调试通过一个小型软件,实现对软件或硬件的操作。
2.遵循模块化、结构化的程序设计方法。
3.要求程序必须正确。
4.程序简明易懂,多运用输入输出提示,出错信息及必要的注释。
5.要求程序结构合理,语句使用得当。
6.适当追求编程技巧和程序运行效率。
三、课程设计题目:
个人档案管理文件
四、课题分析
程序开始时,先建立判断是否存在文件,如果不存在,就创立文件。
然后随便输入i,l,q中任意一个字母,然后跳到相应的子程序,输入i诗,跳到输入的子程序,输入相应的数据,保存到文件里。
当输入l时,保存在文件里的数据就会显示,每个学生的信息显示一行。
当输入q时,直接关闭文件,程序结束
五、流程图:
开始
先建立一个文件
输入i,l,q中的
一个字母
输入i输入l
输入学生的名字,年龄
性别,身高,体重,并把打开文件
数据依次存到文件
显示学生名字,年领
,性别,身高,体重
输入q
关闭文件
结束
六、程序源代码:
vardatasegment
filenamedb'ffff.txt',00;定义文件
vardataends
condatasegment
namesdb10dup(?
);名字定义
agedb?
?
;年龄定义
sexdb2dup(?
);性别定义
heightdb3dup(?
);身高定义
weightdb3dup(?
);体重定义
mess_ndb0dh,0ah,'name:
$'
mess_adb0dh,0ah,'age:
$'
mess_sdb0dh,0ah,'sex:
$'
mess_hdb0dh,0ah,'height:
$'
mess_wdb0dh,0ah,'weight:
$'
s4db0dh,0ah
db'***************************************',0dh,0ah
db'*-1:
printlist[L]-*',0dh,0ah
db'*-2:
insertnewele[I]-*',0dh,0ah
db'*-3:
quit[q]-*',0dh,0ah
db'***************************************',0dh,0ah
db0dh,0ah
db'$'
s1db'nameagesexheightweight',13,10,'$'
s2db'$'
s3db'$'
condataends
codesegment
assumecs:
code,ds:
vardata,es:
condata
start:
movax,condata
moves,ax
movax,vardata
movds,ax
pushds
;--------------printcommandhint-------------------
movax,es
movds,ax
movdx,offsets4
movah,9h
int21h
popds
;----------------intepretcommand------------------
cmp_l:
movah,01h
int21h
cmpal,'l'
jnzcmp_i
calllist_all
jmpstart
cmp_i:
cmpal,'i'
jnzcmp_q
callinsert
jmpstart
cmp_q:
cmpal,'q'
jnzclosef
exit:
movax,4c00h
int21h
;-------------打开和创建文件
list_allprocnear
callopen_create;openorcreatefile
pushds
movax,es;es里放的是文件
movds,ax
leadx,s1
movah,9
int21h
movdl,0ah
movah,2
int21h
loop_rd:
movah,3fh;readrecordfromfiletomemory读取文件
movdx,offsetnames
movcx,20
movbx,si
int21h
cmpax,0
jeread_finish;readtotheend,thenfinish相等是结束
;--------------------名字
leadx,s3
movah,9
int21h
movbx,0
go_on:
movdl,names[bx]
movah,2h
int21h
incbx
cmpbx,10
jlgo_on
;---------------------年龄
leadx,s2
movah,9
int21h
movdl,age[0]
movah,2
int21h
movdl,age[1]
movah,2
int21h
;---------------------性别
leadx,s2
movah,9
int21h
movbx,0
l1:
movdl,sex[bx]
movah,2h
int21h
incbx
cmpbx,2
jll1
;----------------------身高
leadx,s2
movah,9
int21h
movbx,0
l2:
movdl,height[bx]
movah,2h
int21h
incbx
cmpbx,3
jll2
;----------------------体重
leadx,s2
movah,9
int21h
movbx,0
l3:
movdl,weight[bx]
movah,2h
int21h
incbx
cmpbx,3
jll3
movdl,0dh
movah,2
int21h
movdl,0ah
movah,2
int21h
jmploop_rd;arecordfinished,thentoreadthenext接着显示
read_finish:
callclosef
popds
ret
list_allendp
;-----------------------输入子程序
insertprocnear
callopen_create;openofcreatefile
pushds
movax,es
movds,ax
;------------------------名字输入
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
movnames[bx],al
incbx
cmpbx,10
jllp
;---------------------年龄的输入
inext:
leadx,s2
movah,9
int21h
movdx,offsetmess_a
movah,9h
int21h
movbx,0
lp2:
movah,1h
int21h
cmpal,0dh
jzinext1
cmpal,0ah
jzinext1
movage[bx],al
incbx
cmpbx,1
jlelp2
;-----------------------性别输入
inext1:
leadx,s2
movah,9
int21h
movdx,offsetmess_s
movah,9h
int21h
movbx,0
lp3:
movah,1h
int21h
cmpal,0dh
jzinext2
cmpal,0ah
jzinext2
movsex[bx],al
incbx
cmpbx,2
jlelp3
;--------------------身高输入
inext2:
leadx,s2
movah,9
int21h
movdx,offsetmess_h
movah,9h
int21h
movbx,0
lp4:
movah,1h
int21h
cmpal,0dh
jzinext3
cmpal,0ah
jzinext3
movheight[bx],al
incbx
cmpbx,3
jlelp4
;-------------------体重输入
inext3:
leadx,s2
movah,9
int21h
movdx,offsetmess_w
movah,9h
int21h
movbx,0
lp5:
movah,1h
int21h
cmpal,0dh
jziexit
cmpal,0ah
jziexit
movweight[bx],al
incbx
cmpbx,3
jlelp5
iexit:
;movethefilepointertotheendoffile
movah,42h;移动文件
moval,2
movbx,si
movcx,0
movdx,0
int21h
movah,40h;writetherecordtofile写入文件
movbx,si
movcx,20
movdx,offsetnames
int21h
back:
callclosef
popds
ret
insertendp
;---------------------------
open_createprocnear
pushds
movax,segfilename;filename文件d的段地址值送给ax
movds,ax
movah,3dh;openthefile
movdx,offsetfilename
moval,2h;显示文件
int21h
jncok;大于等于时跳转
movah,3ch;如果不存在文件,就创建文件
movdx,offsetfilename
movcx,00
int21h
ok:
movsi,ax
popds
ret
open_createendp
closefprocnear
movbx,si
movah,3eh;关闭文件
int21h
ret
closefendp
codeends
endstart
七、结果显示
8、感想、收获及体会
课程设计从开始找资料到课设结束,在这短时间里,课设给我的收获很大,虽然我的题目不是很难,比其他同学的简单,程序也简单,程序的代码都是简单的指令,但我学到的却很多。
以前学程序时思维都很乱,但写这个程序是,我的思路确是非常清晰的,本来想加上一些代码,让显示时带有颜色,但试了几次都不太理想,就去掉了。
这个程序不是我单独完成的,有些东西是在网上找的。
虽然是别人的,但我把它转换为自己的东西。
在写程序时,思路是最终要的,如果思路错了,你就很难写出正确的程序,但要是思路非常的清晰,就算程序有写错误,你也会很快的找出并把它改对。
所以我认为在写一个程序时,必须把思路弄得非常的清楚,然后再开始写。