版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、河南工程学院汇编语言课程设计成果报告成绩评定学生学号: 学生姓名: 学 院: 计算机学院 专业班级: 计算机科学与技术 专业课程: 汇编语言 指导教师: 王雪瑞 2015年1月9日课程设计指导教师评分表课程设计题目成绩评定成员姓名学号任务分工 查资料、等级评定程序设计 查资料、开始简易数字菜单设计评分项目及分值要素成绩评定项 目最高分评 分 要 素成 绩1学习态度20上机出勤及端正的学习态度、认真刻苦程度,工作量饱满程度等2软件设计质量30采用的算法、设计方案,设计结果,界面友好等方面进行综合评定3设计报告书写20内容按要求步骤书写,条理清晰,表述清楚、措词得当4实际动手能力10熟练使用开发工
2、具,能够迅速准确的进行调试、纠错和运行;组长全面负责,承担复杂的模块设计分值相对要高5答辩过程20能简明扼要地阐述设计的主要内容,能准确流利地回答问题总 成 绩等 级评语 评阅人:年 月 日目 录一、设计内容及目的1(一)设计内容1(二)设计目的1二、总体设计2(一)系统流程框图2(二)具体说明3(三)代码实现3三、等级评定程序设计7(一)功能设计7(二)设计说明7(三)代码实现8四、成绩调试结果及分析12五、心得体会14致 谢15参考文献16I成绩评定一、设计内容及目的(一)设计内容成绩评定。编制一个程序,要求完成以下功能:1.以十进制形式从键盘随机输入成绩(不多于50个)。2.显示成绩评定
3、的等级(90-100为优,80-90为良,70-80为中,60-70为及格,60分以下为不及格)。(二)设计目的根据课题要求,运用自己在课堂上所学的知识,设计出一个程序,在输入学生的成绩后,显示出该学生成绩的等级。通过此次课程设计,提高自己的实践能力,加深对课堂上所学的知识的理解,加强自己的团队合作意识。本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完汇编语言课程后进行的一次全面的综合练习。本课程设计的目的和任务: 巩固和加深学生对汇编语言课程的基本知识的理解和掌握;(1)掌握汇编语言编程和程序调试的基本技能;(2)利用汇编语言进行简单软件设计的基本思路和方法;(3)提高运
4、用汇编语言解决实际问题的能力;(4)掌握书写程序设计说明文档的能力;二、总体设计(一)系统流程框图(al)=1或2?开始简易数字菜单选择菜单号退出输入成绩到bx(al)=1?(bx)=o?(bx)<60?(bx)<70?(bx)<80?(bx)<90?(bx)<=100?显示等级A显示等级B显示等级C显示等级D显示等级ENYYNYNNNNNYYYYY如图1所示:图1 系统流程框图图1 系统流程框图(二)具体说明根据课题的要求,主要完成一下几方面的设计:(1)显示简易数字菜单,根据选择的菜单号,执行相应的分支程序;(2)从键盘输入一个十进制数字(编写一个子程序);(
5、3)对输入的数据进行比较,显示相应成绩等级(优,良,中,及格,不及格可以分别用A,B,C,D,E表示)。简易数字菜单只有两个选择号(12),选择1表示就跳转到执行成绩评定的程序,选择2就返回到DOS窗口。从键盘输入的数字(12)是以字符形式输入的,所以在al中存放的是其ASSCII码值,要将其转换成相应的数字,用and al,0fh或sub al,30h可以实现转换。执行成绩评定程序就要求从键盘输入一个数据,然后将其与相应的分数进行比较,关键是如何从键盘输入一个十进制数,这可以用到子程序的思想,将从键盘输入一个十进制数编写成子程序,然后调用它,从键盘输入一个十进制数子程序其主要算法思想如下:(
6、1)输入09数字(ASCII码),并减30H转换为二进制数;(2)然后将前面输入的数值乘10,并与刚输入的数字相加得到新的数值;(3)重复(1)、(2)步,直到输入一个非数字字符结束;(4)将数值保存到相应的寄存器中。(三)代码实现源程序代码如下:.model small.stack.data mes db'*menu*',0dh,0ah,'$'mes1 db'*1-score valuation*',0dh,0ah,'$'mes2 db'*2-Exit*',0dh,0ah,'$'mes3 db
7、39;input number(12)',0dh,0ah,'$' mes4 db'input a score',0dh,0ah,'$' level1 db 0dh,0ah,'the level of score is:A','$' ;90-100分:成绩等级为 A level2 db 0dh,0ah,'the level of score is:B','$' ;80-90分:成绩等级为 B level3 db 0dh,0ah,'the level of score i
8、s:C','$' ;70-80分:成绩等级为 C level4 db 0dh,0ah,'the level of score is:D','$' ;60-70分:成绩等级为 D level5 db 0dh,0ah,'the level of score is:E','$' ;0-60分:成绩等级为 Estring db 0dh,0ah,'$'table dw disp1,disp2 ;取得各个标号的偏移地址 .code.startupstart1:mov dx,offset mes ;显示简
9、易数字菜单 mov ah,9 int 21h mov dx,offset mes1 mov ah,9 int 21h mov dx,offset mes2 mov ah,9 int 21h mov dx,offset mes3 ;提示输入数字 mov ah,9 int 21h mov ah,1 ;等待按键 int 21h cmp al,'1' ;数字 < 1 ? jb start1 cmp al,'2' ;数字 >2 ? ja start1 and ax,0000fh ;将ASCII码 转换成数字 dec ax shl ax,1 ;等效于add ax
10、,ax mov bx,ax jmp tablebx ;(段内)间接转移:IP<-table+bx start2:.exit 0start3:mov dx,offset level5 mov ah,9 int 21h jmp disp1start4:mov dx,offset level4 mov ah,9 int 21h jmp disp1start5:mov dx,offset level3 mov ah,9 int 21h jmp disp1start6:mov dx,offset level2 mov ah,9 int 21h jmp disp1start7:mov dx,offs
11、et level1 mov ah,9 int 21h jmp disp1read proc ;从键盘输入一个十进制数子程序 push cx push axread1: mov bx, 0 ;把bx清零 read2: mov ah, 1 int 21h cmp al,'o' ;若输入为字母o,则返回主菜单 je start1 cmp al, 0dh je read3 ;输入为回车字符 则数据输入结束 cmp al, 30h ;不是09之间的字符,则输入结束 jl read3 cmp al, 39h ja read3 sub al, 30h ; 是09之间的的字符,则转换为二进制数
12、 mov ah, 0 xchg ax, bx ;交换ax和bx里的值 mov cx, 10 mul cx ;实现数字乘10 add bx, ax ; 已输入的数字乘10后,与新输入的数字值相加,结果放在bx中 jmp read2read3: pop ax pop cx retread endpdisp1: mov dx,offset string ;成绩评定分支程序 mov ah,9 int 21h mov dx,offset mes4 ;提示输入成绩 mov ah,9 int 21h call read ;调用从键盘输入十进制数子程序 cmp bx,60 ;(bx)<60 ? jb s
13、tart3 cmp bx,70 jb start4 cmp bx,80 jb start5 cmp bx,90 jb start6 cmp bx,100 ;(bx)<=100 ? jbe start7disp2:jmp start2 ;返回DOS end 三、等级评定程序设计(一)功能设计根据选题要求,90-100为优,80-90为良,70-80为中,60-70为及格,60分以下为不及格(分别用A、B、C、D、E表示),编写程序,在用户输入学生成绩后,能够显示出该学生成绩相对应的等级。(二)设计说明执行成绩评定程序就要求从键盘输入一个数据,然后将其与相应的分数进行比较,关键是如何从键盘输
14、入一个十进制数,这可以用到子程序的思想,将从键盘输入一个十进制数编写成子程序,然后调用它,从键盘输入一个十进制数子程序其主要算法思想如下:(1)输入09数字(ASCII码),并减30H转换为二进制数;(2)然后将前面输入的数值乘10,并与刚输入的数字相加得到新的数值;(3)重复1、2步,直到输入一个非数字字符结束;(4)将数值保存到相应的寄存器中。流程图如图2所示。输入成绩到bxN N(bx)<60? NYYN(bx)<70?YYYN显示等级A显示等级B显示等级C显示等级D显示等级E(bx)<=100?(bx)<90?(bx)<80? 图2 成绩评定流程图(三)代
15、码实现代码如下:start1:mov dx,offset mes ;显示简易数字菜单 mov ah,9 int 21h mov dx,offset mes1 mov ah,9 int 21h mov dx,offset mes2 mov ah,9 int 21h mov dx,offset mes3 ;提示输入数字 mov ah,9 int 21h mov ah,1 ;等待按键 int 21h cmp al,'1' ;数字 < 1 ? jb start1 cmp al,'2' ;数字 >2 ? ja start1 and ax,0000fh ;将AS
16、CII码 转换成数字 dec ax shl ax,1 ;等效于add ax,ax mov bx,ax jmp tablebx ;(段内)间接转移:IP<-table+bx start2:.exit 0start3:mov dx,offset level5 mov ah,9 int 21h jmp disp1start4:mov dx,offset level4 mov ah,9 int 21h jmp disp1start5:mov dx,offset level3 mov ah,9 int 21h jmp disp1start6:mov dx,offset level2 mov ah,
17、9 int 21h jmp disp1start7:mov dx,offset level1 mov ah,9 int 21h jmp disp1read proc ;从键盘输入一个十进制数子程序 push cx push axread1: mov bx, 0 ;把bx清零 read2: mov ah, 1 int 21h cmp al,'o' ;若输入为字母o,则返回主菜单 je start1 cmp al, 0dh je read3 ;输入为回车字符 则数据输入结束 cmp al, 30h ;不是09之间的字符,则输入结束 jl read3 cmp al, 39h ja r
18、ead3 sub al, 30h ; 是09之间的的字符,则转换为二进制数 mov ah, 0 xchg ax, bx ;交换ax和bx里的值 mov cx, 10 mul cx ;实现数字乘10 add bx, ax ; 已输入的数字乘10后,与新输入的数字值相加,结果放在bx中 jmp read2read3: pop ax pop cx retread endpdisp1: mov dx,offset string ;成绩评定分支程序 mov ah,9 int 21h mov dx,offset mes4 ;提示输入成绩 mov ah,9 int 21h call read ;调用从键盘输
19、入十进制数子程序 cmp bx,60 ;(bx)<60 ? jb start3 cmp bx,70 jb start4 cmp bx,80 jb start5 cmp bx,90 jb start6 cmp bx,100 ;(bx)<=100 ? jbe start7disp2:jmp start2 ;返回DOS end 四、成绩调试结果及分析 启动程序后,进入开始简易数字菜单,如图3所示:图3 开始简易数字菜单输入数字“1”,进入成绩评定界面,如图4所示:图4 成绩评定界面依次输入100、90、80、70、60、50等六个数字,观察结果,如图5所示:图5 调试结果如图5所示, 在
20、输入上述六个数字后,分别显示出其对应的等级,说明这一块程序设计的成功。输入数字110,观察结果,如图6所示:图6 错误结果如图6所示,在输入数字110后,会提示“input error!please input a score again”,可见,输入成绩范围在0100之间,超过范围则会提醒。五、心得体会为期一周的汇编语言课程设计就要结束了。在这次课程设计中,我们小组选择的是“成绩评定”这一选题,要求设计一个程序,能够实现对学生成绩的等级评定,分为优、良、中、及格和不及格五个等级。刚拿到题目的时候还有点担心,因为平时汇编语言的知识掌握的并不牢固,但当静下心来仔细把问题读懂和头脑中有了大致思路的时候,这种担心就完全消失了。其实这次课程设计并不要求把书上的指令及其工能掌握的很好并且能熟练的运用汇编语言编程,而恰恰是利用这次课程设计的机会来提高这方面的能力。在设计过程中也遇到了很多的问题,比如在调用系统功能键从键盘输入一个数字(09)时,还要将其转换成二进制数字。这个转换过程中也花了我一点时间。还有一个比较大的问题是如何从键盘输入一个十进制数,一开始设计的还只能输入一位数,然后进行比较。后经过老师的帮助和同学的讨论,终于又进一步完成了任意数字的输入,采用子程序的思想,简化了源
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 5169.36-2025电工电子产品着火危险试验第36部分:燃烧烟气流的腐蚀危害试验方法概要和相关性
- 2024年宁夏辅警招聘考试真题及一套参考答案详解
- 2023年鹰潭辅警协警招聘考试备考题库及答案详解(夺冠系列)
- 2023年莆田辅警协警招聘考试真题及答案详解(全优)
- 2024年北海辅警招聘考试真题及答案详解(网校专用)
- 2024年合肥辅警招聘考试题库及参考答案详解1套
- 2024年商洛辅警招聘考试题库及参考答案详解一套
- 2023年阿克苏辅警协警招聘考试备考题库及答案详解(夺冠)
- 2023年陇南辅警协警招聘考试备考题库附答案详解(综合题)
- 2024年宝鸡辅警协警招聘考试真题含答案详解(轻巧夺冠)
- 仓库年终述职报告
- 人教版五年级上册寒假数学计算题天天练带答案(共15天)
- 初中饮食安全课件
- 期中测试卷2024-2025学年人教PEP版英语六年级上册(含听力原文含答案无听力音频)
- 飞行员职业生涯规划
- 尿路感染的治疗和护理课件
- TSG11-2020锅炉安全技术规程(现行)
- 【山东卷】山东省济宁市、邹城市、聊城市2024-2025学年度2025届高三上学期期中教学质量检测考试(10.5-10.7)地理试卷
- 湖南省长沙市长郡集团联考2024-2025学年九年级上学期11月期中物理试题
- 2024年员工餐厅承包合同范本
- JJF(苏) 283-2024 暂态地电压法局部放电检测仪校准规范
评论
0/150
提交评论