计算比赛成绩 汇编语言课程设计报告书.docx
《计算比赛成绩 汇编语言课程设计报告书.docx》由会员分享,可在线阅读,更多相关《计算比赛成绩 汇编语言课程设计报告书.docx(11页珍藏版)》请在冰豆网上搜索。
![计算比赛成绩 汇编语言课程设计报告书.docx](https://file1.bdocx.com/fileroot1/2022-11/23/8c9dda6a-ab65-4d19-b68f-b211a998e37f/8c9dda6a-ab65-4d19-b68f-b211a998e37f1.gif)
计算比赛成绩汇编语言课程设计报告书
一、设计内容与设计要求
1.设计内容:
通过本周的课程设计,学生能够巩固所学的基础知识,并能够使学生更加熟练运用汇编程序设计语言来掌握综合汇编程序设计的方法和过程,以及为设计其它应用软件提供帮助,进而提高学生的软件设计能力。
1、编制一计算比赛成绩的程序,要求完成以下功能:
(1)9名评委,每个评委给分范围为0~10(整数);
(2)9名评委给分中,去掉一个最高分和一个最低分,剩余7名评委的平均分即为参赛者的得分(精确到小数点二位);
(3)将得分在光标位置处显示出来。
2、编制一程序,要求接收从键盘输入的一个班的学生成绩,并存放于30字的grade数组中,各数据的格式为:
学号,成绩1,成绩2,…,成绩5
然后根据grade中的学生成绩,把学生名次填入rank数据组中,并显示出来,格式为:
学号,名次
3、利用INT1CH(大约每秒中断18.2次)编写一个中断驻留程序,要求在屏幕的右上角显示计算机中当前系统时间,显示格式为
时:
分:
秒:
1/100秒
4、输入一个菱形的两条对角线长,在屏幕上用‘*’号画出一个彩色的菱形。
5、设置图形方式并显示彩条,要求:
选择背景色为蓝色,调色板为0,然后每行显示一种颜色,每四行重复一次,一直到整个屏幕都显示出彩条
2.设计要求:
掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经验。
1.设计正确,方案合理。
2.界面友好,使用方便。
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
CMPAL,'1'
JAER;AL>1则跳到ER
SUBAL,30H
MOVDL,10
MULDL;十位乘以10
MOVDX,AX;DX存十位数
MOVAH,1
INT21H;输入得分的个位到AL
CMPAL,'0'
JBER;AL<0小于则跳到ER
CMPAL,'9'
JAER;AL>10则跳到ER
SUBAL,30H
ADDAL,DL;个位十位相加到AL
MOVBUF[SI],AL
INCSI
INCNUMBER
MOVDL,0AH;换行
MOVAH,2
INT21H
MOVDL,0DH;回车
INT21H
LOOPINPUT;循环输入9次
JMPRANGE_0;转入排序
ER:
;输入错误后返回重新输入
LEADX,ERROR
MOVAH,9
INT21H
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
MOVAH,9
INT21H
MOVCX,9
XORSI,SI;SI清零
MOVAH,2
RANGE_OUTPUT:
;输出排序后的得分
MOVDL,BUF[SI]
ADDDL,30H
CMPDL,39H;判断是否是10分
JATENS_1
JBETENS_0
TENS_1:
;十位数为1,则输出'10'
MOVBX,1
MOVDL,'1'
INT21H
MOVDL,'0'
INT21H
INCSI
MOVDL,','
INT21H
JMPNEXT_2
TENS_0:
;十位数为0,则按原得分输出
INT21H
INCSI
MOVDL,','
INT21H
NEXT_2:
LOOPRANGE_OUTPUT
MOVAH,2
MOVDL,0AH;换行
INT21H
MOVDL,0AH;换行
INT21H
MOVDL,0DH;回车
INT21H
LEADX,STRING3
MOVAH,9H
INT21H
MOVCX,7;累加中间7个数字
XORAX,AX
DECSI
SUM:
;求7个分数的和
DECSI
ADDAL,BUF[SI]
LOOPSUM
CMPAL,46H
JAEFULL_MARK
JMPN_FULL_MARK
FULL_MARK:
;满分时
MOVAH,2H
MOVDL,'1'
INT21H
MOVDL,'0'
INT21H
MOVDL,'.'
INT21H
MOVDL,'0'
INT21H
MOVDL,'0'
INT21H
JMPENDING
N_FULL_MARK:
;非满分时
MOVCX,2
MOVBH,1;小数点只出现1次
DIVISION:
MOVBL,7
DIVBL;除以7
PUSHAX
ADDAL,30H
MOVDL,AL
MOVAH,2
INT21H
CMPBH,0
JEDOT
MOVDL,'.'
MOVBX,0
DOT:
INT21H
POPAX
MOVAL,AH;余数存入AL
MOVDL,10
MULDL;余数乘以10,结果存入AX
LOOPDIVISION
ENDING:
MOVAH,02
MOVBH,0
MOVDX,0C46H
INT10H;设置光标位置
MOVAH,1
INT21H
CODEENDS
ENDSTART
五、程序调试结果
六、设计总结
通过课程几天的课程设计,学到了诸多上课学不到的知识,特别是体会到了汇编语言与高级程序语言编程的不同,起初非常不适宜汇编语言的编程,高级程序语言中的基本功能,入多重循环和套嵌,在汇编语言看来缺是相当复杂的,还有数字的输入和输出都要经过ASCII码与二进制的转换,数据的定义少得可怜,这些特性都让起初的我感到寸步难行。
但是进过进一步的上机操作和学习,汇编语言开始变得明朗起来。
此次程序设计虽然收获不小,也留有许多遗憾,如程序没有能够对输入得分大于10分的错误操作做出提示,结果的平均分的百分位在某些时候存在误差,有可能是因为程序中数据是以字节形式存储的,字符长度太短导致误差,也有可能是因为求小数的方法导致的。
总的来说这次课程设计虽然遇到了一些比较麻烦的问题,但还算比较顺利,经过一些讨论和修改,一个完整并且能达到要求的程序总算是写好了,过程虽然有点坎坷,可是收获也颇丰,通过这次课设让我对课本基础知识有了一个系统的掌握,而且对课题设计的思路也有了比较清晰的认识,让我对汇编的了解更加深刻。
计算机科学与技术系课程设计评分表
课程名称:
项目
评价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日期:
(注:
1.此页附在课程设计报告之后;2.综合成绩按优、良、中、及格和不及格五级评定。
)