汇编语言课程设计Word文档下载推荐.docx
《汇编语言课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《汇编语言课程设计Word文档下载推荐.docx(36页珍藏版)》请在冰豆网上搜索。
5.系统源程序关键代码及必要注释
6、能够较熟练地应用一种编辑软件编写程序,掌握dos系统软件设计的基本方法
7、课程设计说明书应内容完整、字迹工整、图表整齐规范、数据详实。
8、课程设计总结
9、字数4000左右。
10、参考文献(至少列写3篇文献)
网上下载“《汇编语言课程设计案例精编》源代码”
四、课程设计说明书装订顺序
1、封面
2、任务书
3、目录
4、设计说明书正文
目录
1.设计任务5
2.设计目的5
3.概要设计5
4.详细设计5
5.程序代码10
6.程序调试29
7.课设小结29
参考文献30
1.设计任务
在本次课程设计中,我设计的是一个简易的学生成绩管理系统,该系统可以对学生的三科成绩进行排序并求出课程的平均成绩并显示。
2.设计目的
汇编语言”课程设计是在教学及实验基础上,对课程所学理论知识的深化和提高。
3.概要设计
1建立学生成绩文档;
2以学号为序输入学生各门功课成绩;
4.详细设计
一、建立学生基本信息。
(输入学号、各学科名称)
二、建立学生成绩文档。
(输入各科学科成绩)
三、显示每门课程学生名次。
(以学号为序)
四、显示指定课程的平均成绩。
五、显示3门课程各个分数段学生人数。
(以表格形式给出数据)
六、成绩排序(按总成绩降序排列)
七、退出
模块层次图
建立学生基本信息
建立学生成绩文档
每门
课程名次
系统流程图显示
功能模块说明
学生信息建立(input模块)
输入:
以学号为序从保存每个学生的各科成绩。
各个成绩之间用逗号隔开。
输出:
把一个学生的各科成绩存入数组grade。
功能:
接收一个同学的各科成绩。
调用子模块decibin把从输入的一个十进制书转换为二进制数。
调用子模块crlf完成回车换行功能。
取得一个学生的一课成绩显示一个学生每门课程名次(rankp,1,2,模块)
从grade数组中取得一个同学的一课成绩。
以学号为序计算出该学生这个课程的名次存入rank数组。
计算每门课程学生的名次。
算法为一个学生的名次为成绩高于该生的学生人数加1。
从rank数组中取得一个学生的名次。
把一个学生名次的这课成绩的名次在终端上显示出来。
显示一个学生这课成绩名次。
调用子模块binidec,以便把rank数组中的二进制数转换为十进制数并在终端上显示出来。
调用子模块crlf完成回车、换行功能。
将十进制转换为二进制(decibin模块)
从grade数组中取得十进制数。
把该数转化为二进制数并存入BX寄存器中。
把从键盘取得的一个十进制数换为二进制数,并将该数存入BX中。
回车换行(crlf模块)
向终端发出回车、换行符。
完成一次回车、换行功能。
将二进制数转换为十进制数(binidec模块)
从BX寄存器取得一个二进制数。
在终端显示屏幕上显示一个十进制数。
取一个二进制数转换为一个十进制数(dec_div模块)
从BX寄存器中取得需装换为十进制的数。
在屏幕上显示以为十进制数。
把BX寄存器中的二进制数除以相应的十的幂,并在上显示一位商。
余数保存在BX寄存器中。
求指定课程平均成绩(output模块)
从每个同学的grade中选出指定课程成绩。
将该课程的平均成绩显示在屏幕上。
计算这个班级的每个课程的平均成绩,并予以显示。
统计三门课程各个分数段学生人数(rankp3模块)
从grade数组中选出指定课程分数。
将各个分数段的人数统计出来显示在屏幕上面。
计算每门课程各个分数段学生人数。
计算每个学生总成绩(rankp4模块)
从每个学生的grade数组中提出所有成绩。
按总成绩降序排列,显示学生总成绩列表。
计算每个学生总成绩,按总成绩降序排列。
5.程序代码
;
*******************************************************************************
datareasegment
englishdw10dup(?
)
mathematicsdw10dup(?
physicaldw10dup(?
gradedw10dup(?
rankdw10dup(?
rank1dw10dup(?
rank2dw10dup(?
rank3dw10dup(?
s5dw0
s6dw0
s7dw0
s8dw0
s9dw0
s10dw0
count1dw?
count2dw?
count3dw?
count4dw?
mess1db'
GradeofEnglish:
$'
mess2db'
GradeofMathematics:
mess3db'
GradeofPhysical:
mess4db13,10,'
InputError!
Pleaseinputrepeat.'
13,10,'
mess5db'
RankstudentnumberofEnglish:
mess6db'
RankstudentnumberofMath:
mess7db'
RankstudentnumberofPhysical:
mess8db'
StudentGradeManagementSystem'
0ah,0dh,'
mess9db'
Plesechoose:
1:
Continue2:
Exit$'
mess10db'
AveragegradeofEnglish:
mess11db'
AveragegradeofMath:
mess12db'
AveragegradeofPhysical:
mess13db'
Enter2:
mess14db'
Rankofoverallscore:
mess15db'
Rankofstudentnumberwithoverallscore:
mess16db'
Pleaseinputgrade(English,Math,Physical):
mess17db'
PeopleofEnglshgrade(<
60,60---69,70---79,80---89,90---90,=100):
mess18db'
PeopleofMathgrade(<
mess19db'
PeopleofPhysicalgrade(<
datareaends
showmacroaddrs
leadx,addrs
movah,9;
宏定义,显示字符串
int21h
endm
prognamsegment
mainprocfar
assumecs:
prognam,ds:
datarea
START:
设置堆栈为了返回dos
pushds
subax,ax
pushax
movax,datarea
movds,ax
callclear
movah,2;
调用置光标位置功能
movdh,1;
使光标位置置为位置(1,8)
movdl,8
movbh,0;
页号为0
int10h;
BIOS显示中断调用
showmess8
callchoose
ret
mainendp
chooseprocnear
showmess13
callcrlf
movah,01
cmpal,31h
jnzexit
next17:
showmess16
callinput1
callrankp
calloutput1
callinput2
callrankp1
calloutput2
callinput3
callrankp2
calloutput3
callengrade
callmagrade
callphgrade
callencount
calloutput7
callmacount
calloutput8
callphcount
calloutput9
callgraderank
callrankp3
calloutput5
callrankg
calloutput4
showmess9
jmpnext17
exit:
chooseendp
input1procnear
next18:
showmess1
movsi,0;
至数组下标为0
movcount1,0
movcx,10
next30:
movenglish[si],0
addsi,2
loopnext30
movsi,0
enter:
calldecibin
inccount1;
count自增1
cmpdl,'
'
;
dl里的内容与‘,’相等则转移至store
jestore
cmpdl,13
jeexit2
jneerror
store:
movenglish[si],bx;
将成绩送入储存单元
jmpenter
error:
showmess4
jmpnext18
exit2:
movenglish[si],bx
input1endp
input2procnear
next19:
showmess2
movcount2,0
next31:
movmathematics[si],0
loopnext31
enter1:
inccount2
jestore1
jeexit3
jneerror1
store1:
movmathematics[si],bx
jmpenter1
error1:
jmpnext19
exit3:
input2endp
******************************************************************************
input3procnear
next20:
showmess3
movcount3,0
next32:
movphysical[si],0
loopnext32
enter3:
inccount3
jestore2
jeexit4
jneerror3
store2:
movphysical[si],bx
jmpenter3
error3:
jmpnext20
exit4:
input3endp
rankpprocnear
movdi,count1
movbx,0
loop1:
movax,english[bx]
movwordptrrank[bx],0
movcx,count1
leasi,english
next:
cmpax,[si]
jgno_count
incwordptrrank[bx]
no_count:
loopnext
addbx,2
decdi
jneloop1
rankpendp
*****************************************************************************
rankp1procnear
movdi,count2
loop2:
movax,mathematics[bx]
movwordptrrank1[bx],0
movcx,count2
leasi,mathematics
next1:
jgno_count1
incwordptrrank1[bx]
no_count1:
loopnext1
jneloop2
rankp1endp
rankp2procnear
movdi,count3
loop3:
movax,physical[bx]
movwordptrrank2[bx],0
movcx,count3
leasi,physical
next3:
jgno_count2
incwordptrrank2[bx]
no_count2:
loopnext3
jneloop3
rankp2endp
rankp3procnear
movdi,count4
loopc:
movax,grade[bx]
movwordptrrank3[bx],0
leasi,grade
nextc:
jgno_count3
incwordptrrank3[bx]
no_count3:
loopnextc
jneloopc
rankp3endp
output1procnear
showmess5
next10:
movbx,rank[si]
callbinidec
movdl,'
movah,02
jnznext10
output1endp
output2procnear
showmess6
next11:
movbx,rank1[si]
jnznext11
output2endp
output3procnear
showmess7
next13:
movbx,rank2[si]
jnznext13
output3endp
output4procnear
showmess14
next21:
movbx,grade[si]
jnznext21
output4endp
output5procnear
showmess15
nextb:
movbx,rank3[si]
jnznextb
output5endp
output7procnear
showmess17
movbx,s5
int