计算比赛成绩 汇编语言课程设计报告书Word格式.docx
《计算比赛成绩 汇编语言课程设计报告书Word格式.docx》由会员分享,可在线阅读,更多相关《计算比赛成绩 汇编语言课程设计报告书Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
3.程序精炼,结构清晰。
4.设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。
5.上机演示。
6.按学号顺序选课题号,并在规定的时间内独自完成相关课题的汇编源程序编写、调整和运行。
源程序及编译生成各文件均保存在软盘中;
7.按本任务书的要求,按附录的要求编写《课程设计报告》(Word文档格式)。
并用A4的复印纸打印并装订;
二、进度安排
第1周:
星期1
星期2
星期3
星期4
附:
课程设计报告装订顺序:
封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。
正文的格式:
一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;
行距为22。
正文的内容:
一、课题的主要功能;
二、课题的功能模块的划分(要求画出模块图);
三、主要功能的实现(至少要有一个主要模块的流程图);
四、程序调试;
五、总结;
六、附件(所有程序的原代码,要求对程序写出必要的注释)。
正文总字数要求在5000字以上(不含程序原代码)。
一、题目
编制一计算比赛成绩的程序,要求完成以下功能:
(1)9名评委,每个评委给分范围为0~10(整数);
(2)9名评委给分中,去掉一个最高分和一个最低分,剩余7名评委的平均分即为参赛者的得分(精确到小数点二位);
(3)将得分在光标位置处显示出来。
二、程序总体设计方案、思路
1.1.总体设计方案
通过读取依次从键盘输入的9个两位的十进制数得分,将得分保存在字符串中,然后用冒泡法将9个数的位置按大小重新排列并输出,再将中间的7个数累加起来除以7,即得到去掉最高分和最低分之后的平均分,最后设置光标位置到平均分处。
1.2.设计思路
通过记录键盘,将ASCII码转化为二进制数寸入长度为9的字符串中,此部分使用用循环结构。
若输入的两位数的首位,即十位,非0或非1,则提示错误并要求重复输入,若输入的个位数非0~9中的数,则提示错误并要求重复输入。
用冒泡法重排9个数,使得第1和第9个数分别为最大数和最小数,并在屏幕中依次显示出来。
然后用循环语句求出9个数中中间的7个数的和,即总得分,若总得分为70分,则直接输出平均分:
10.00分。
若小于70分则将总得分除以7,得到的商作为平均分的个位数,输出一个小数点,将余数乘以10再除以7,如此循环3次,后两次不输出小数点,得到精确到小数点后两位的平均的分数,再将平均分输出。
最后改变光标位置为平均得分处。
三、程序设计框图
YES
NO
四、源程序清单
DATASEGMENT
BUFDB10DUP(0)
STRING1DB'
Pleaseenterthescore'
NUMBERDB31H,'
:
'
'
$'
STRING2DB0AH,'
Therangedscoresare:
'
STRING3DB'
Afterremovingthehighestandlowestscore,theaveragescoreis:
ERRORDB'
ERROR'
0AH,0DH,'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
XORSI,SI;
SI置0
MOVCX,9;
9个数
INPUT:
LEADX,STRING1
MOVAH,9
INT21H
MOVAH,1
INT21H;
输入得分的十位到AL
CMPAL,'
0'
JBER;
AL<
0小于则跳到ER
1'
JAER;
AL>
1则跳到ER
SUBAL,30H
MOVDL,10
MULDL;
十位乘以10
MOVDX,AX;
DX存十位数
输入得分的个位到AL
9'
10则跳到ER
ADDAL,DL;
个位十位相加到AL
MOVBUF[SI],AL
INCSI
INCNUMBER
MOVDL,0AH;
换行
MOVAH,2
MOVDL,0DH;
回车
LOOPINPUT;
循环输入9次
JMPRANGE_0;
转入排序
ER:
;
输入错误后返回重新输入
LEADX,ERROR
MOVAH,9
JMPINPUT
RANGE_0:
MOVBX,1
MOVCX,9
XORDI,DI
RANGE:
MOVAL,BUF[DI]
CMPAL,BUF[DI+1]
JAENEXT_1
XCHGBUF[DI+1],AL
MOVBUF[DI],AL
MOVBX,0
NEXT_1:
INCDI
LOOPRANGE
CMPBX,0
JERANGE_0
冒泡法排列得分
LEADX,STRING2
SI清零
RANGE_OUTPUT:
输出排序后的得分
MOVDL,BUF[SI]
ADDDL,30H
CMPDL,39H;
判断是否是10分
JATENS_1
JBETENS_0
TENS_1:
十位数为1,则输出'
10'
MOVBX,1
MOVDL,'
INT21H
MOVDL,'
JMPNEXT_2
TENS_0:
十位数为0,则按原得分输出
NEXT_2:
LOOPRANGE_OUTPUT
LEADX,STRING3
MOVAH,9H
MOVCX,7;
累加中间7个数字
XORAX,AX
DECSI
SUM:
求7个分数的和
DECSI
ADDAL,BUF[SI]
LOOPSUM
CMPAL,46H
JAEFULL_MARK
JMPN_FULL_MARK
FULL_MARK:
满分时
MOVAH,2H
.'
JMPENDING
N_FULL_MARK:
非满分时
MOVCX,2
MOVBH,1;
小数点只出现1次
DIVISION:
MOVBL,7
DIVBL;
除以7
PUSHAX
ADDAL,30H
MOVDL,AL
CMPBH,0
JEDOT
DOT:
POPAX
MOVAL,AH;
余数存入AL
余数乘以10,结果存入AX
LOOPDIVISION
ENDING:
MOVAH,02
MOVBH,0
MOVDX,0C46H
INT10H;
设置光标位置
MOVAH,1
CODEENDS
ENDSTART
五、程序调试结果
六、设计总结
通过课程几天的课程设计,学到了诸多上课学不到的知识,特别是体会到了汇编语言与高级程序语言编程的不同,起初非常不适宜汇编语言的编程,高级程序语言中的基本功能,入多重循环和套嵌,在汇编语言看来缺是相当复杂的,还有数字的输入和输出都要经过ASCII码与二进制的转换,数据的定义少得可怜,这些特性都让起初的我感到寸步难行。
但是进过进一步的上机操作和学习,汇编语言开始变得明朗起来。
此次程序设计虽然收获不小,也留有许多遗憾,如程序没有能够对输入得分大于10分的错误操作做出提示,结果的平均分的百分位在某些时候存在误差,有可能是因为程序中数据是以字节形式存储的,字符长度太短导致误差,也有可能是因为求小数的方法导致的。
总的来说这次课程设计虽然遇到了一些比较麻烦的问题,但还算比较顺利,经过一些讨论和修改,一个完整并且能达到要求的程序总算是写好了,过程虽然有点坎坷,可是收获也颇丰,通过这次课设让我对课本基础知识有了一个系统的掌握,而且对课题设计的思路也有了比较清晰的认识,让我对汇编的了解更加深刻。
计算机科学与技术系课程设计评分表
课程名称:
项目
评价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日期:
(注:
1.此页附在课程设计报告之后;
2.综合成绩按优、良、中、及格和不及格五级评定。
)