汇编语言课程设计.docx
- 文档编号:3776227
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:36
- 大小:181.86KB
汇编语言课程设计.docx
《汇编语言课程设计.docx》由会员分享,可在线阅读,更多相关《汇编语言课程设计.docx(36页珍藏版)》请在冰豆网上搜索。
汇编语言课程设计
汇编语言课程设计说明书
题目:
简易学生成绩管理系统
设计者:
专业班级:
网络0901班
所属系部:
计算机科学系
2010年12月7日
汇编语言课程设计任务书
一、课程设计目的
“汇编语言”课程设计是在教学及实验基础上,对课程所学理论知识的深化和提高。
因此,课程设计要求同学们熟悉汇编语言的编程,BIOS中断调用、dos系统功能调用、磁盘数据的查询、存取等相关知识。
通过课程设计,一方面提高运用汇编语言编程解决实际问题的能力,另一方面使同学们更深入的了解计算机系统内部的有关知识,为以后的学习和系统开发奠定良好的基础。
二、课题名称:
简易学生成绩管理系统
三、设计内容与基本要求
基本功能
1建立学生成绩文档;设班人数为10人,学号为1-10号
2以学号为序输入学生各门功课成绩;
(假设3门功课分别为english,mathematics,physical);
3以学号为序显示每门课程学生名次
4统计指定课程的平均成绩,并在屏幕上显示;
5每门课程成绩分析在屏幕上显示3门课程的各个分数段的学生人数;
(分数段为:
>=90;80~89;70~79;60~69;<=59)此处可以以表格的形式给出数据。
6成绩排序(按总成绩降序排列)
7退出;
课程设计说明书应包括以下内容:
(16k纸)
1、对设计课题进行简要阐述,并说明设计任务及具体要求。
2、论述系统设计方案,模块层次图
3、系统流程图。
4、各功能模块设计说明、设计实现过程及源程序。
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.设计目的
汇编语言”课程设计是在教学及实验基础上,对课程所学理论知识的深化和提高。
因此,课程设计要求同学们熟悉汇编语言的编程,BIOS中断调用、dos系统功能调用、磁盘数据的查询、存取等相关知识。
通过课程设计,一方面提高运用汇编语言编程解决实际问题的能力,另一方面使同学们更深入的了解计算机系统内部的有关知识,为以后的学习和系统开发奠定良好的基础。
3.概要设计
1建立学生成绩文档;设班人数为10人,学号为1-10号
2以学号为序输入学生各门功课成绩;
(假设3门功课分别为english,mathematics,physical);
3以学号为序显示每门课程学生名次
4统计指定课程的平均成绩,并在屏幕上显示;
5每门课程成绩分析在屏幕上显示3门课程的各个分数段的学生人数;
(分数段为:
>=90;80~89;70~79;60~69;<=59)此处可以以表格的形式给出数据。
6成绩排序(按总成绩降序排列)
7退出;
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'Plesechoose:
1:
Enter2:
Exit$'
mess14db'Rankofoverallscore:
$'
mess15db'Rankofstudentnumberwithoverallscore:
$'
mess16db'Pleaseinputgrade(English,Math,Physical):
$'
mess17db'PeopleofEnglshgrade(<60,60---69,70---79,80---89,90---90,=100):
$'
mess18db'PeopleofMathgrade(<60,60---69,70---79,80---89,90---90,=100):
$'
mess19db'PeopleofPhysicalgrade(<60,60---69,70---79,80---89,90---90,=100):
$'
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
int21h
cmpal,31h
jnzexit
next17:
callcrlf
showmess16
callcrlf
callinput1
callrankp
calloutput1
callinput2
callrankp1
calloutput2
callinput3
callrankp2
calloutput3
callcrlf
callengrade
callmagrade
callphgrade
callcrlf
callencount
calloutput7
callmacount
calloutput8
callphcount
calloutput9
callcrlf
callgraderank
callrankp3
calloutput5
callrankg
calloutput4
showmess9
callcrlf
movah,01
int21h
cmpal,31h
jnzexit
jmpnext17
exit:
ret
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;将成绩送入储存单元
addsi,2
jmpenter
error:
showmess4
jmpnext18
exit2:
movenglish[si],bx
callcrlf
ret
input1endp
;*******************************************************************************
input2procnear
next19:
showmess2
movsi,0
movcount2,0
movcx,10
next31:
movmathematics[si],0
addsi,2
loopnext31
movsi,0
enter1:
calldecibin
inccount2
cmpdl,','
jestore1
cmpdl,13
jeexit3
jneerror1
store1:
movmathematics[si],bx
addsi,2
jmpenter1
error1:
showmess4
jmpnext19
exit3:
movmathematics[si],bx
callcrlf
ret
input2endp
;******************************************************************************
input3procnear
next20:
showmess3
movsi,0
movcount3,0
movcx,10
next32:
movphysical[si],0
addsi,2
loopnext32
movsi,0
enter3:
calldecibin
inccount3
cmpdl,','
jestore2
cmpdl,13
jeexit4
jneerror3
store2:
movphysical[si],bx
addsi,2
jmpenter3
error3:
showmess4
jmpnext20
exit4:
movphysical[si],bx
callcrlf
ret
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:
addsi,2
loopnext
addbx,2
decdi
jneloop1
ret
rankpendp
;*****************************************************************************
rankp1procnear
movdi,count2
movbx,0
loop2:
movax,mathematics[bx]
movwordptrrank1[bx],0
movcx,count2
leasi,mathematics
next1:
cmpax,[si]
jgno_count1
incwordptrrank1[bx]
no_count1:
addsi,2
loopnext1
addbx,2
decdi
jneloop2
ret
rankp1endp
;*****************************************************************************
rankp2procnear
movdi,count3
movbx,0
loop3:
movax,physical[bx]
movwordptrrank2[bx],0
movcx,count3
leasi,physical
next3:
cmpax,[si]
jgno_count2
incwordptrrank2[bx]
no_count2:
addsi,2
loopnext3
addbx,2
decdi
jneloop3
ret
rankp2endp
;*****************************************************************************
rankp3procnear
movdi,count4
movbx,0
loopc:
movax,grade[bx]
movwordptrrank3[bx],0
movcx,count3
leasi,grade
nextc:
cmpax,[si]
jgno_count3
incwordptrrank3[bx]
no_count3:
addsi,2
loopnextc
addbx,2
decdi
jneloopc
ret
rankp3endp
;*****************************************************************************
output1procnear
showmess5
movsi,0
movdi,count1
next10:
movbx,rank[si]
callbinidec
movdl,','
movah,02
int21h
addsi,2
decdi
jnznext10
callcrlf
ret
output1endp
;*****************************************************************************
output2procnear
showmess6
movsi,0
movdi,count2
next11:
movbx,rank1[si]
callbinidec
movdl,','
movah,02
int21h
addsi,2
decdi
jnznext11
callcrlf
ret
output2endp
;*****************************************************************************
output3procnear
showmess7
movsi,0
movdi,count3
next13:
movbx,rank2[si]
callbinidec
movdl,','
movah,02
int21h
addsi,2
decdi
jnznext13
callcrlf
ret
output3endp
;*****************************************************************************
output4procnear
showmess14
movsi,0
movdi,count1
next21:
movbx,grade[si]
callbinidec
movdl,','
movah,02
int21h
addsi,2
decdi
jnznext21
callcrlf
ret
output4endp
;******************************************************************************
output5procnear
showmess15
movsi,0
movdi,count1
nextb:
movbx,rank3[si]
callbinidec
movdl,','
movah,02
int21h
addsi,2
decdi
jnznextb
callcrlf
ret
output5endp
;******************************************************************************
output7procnear
showmess17
movbx,s5
callbinidec
movdl,','
movah,02
int
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)