汇编语言计算比赛成绩系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汇编语言计算比赛成绩系统
《汇编语言》实习报告
实习题目计算比赛成绩系统
学生姓名
班级(学号)
院系信息学院计算机系
指导老师
提交时间2012年6月19号
成绩
目录
1 实习任务概述 (3)
2基本知识 (3)
2.1 汇编语言源程序结构 (3)
2.2 汇编语言上机过程 (3)
2.3关键指令介绍
3
3课题分析 (3)
3.1程序功能分析
4
3.2主程序流程图
4
4详细设计 (5)
4.1菜单模块
5
4.2输入模块
6
4.3移动模块
7
4.4输出模块
7
5 代码实现 (9)
6 调试过程 (13)
7操作说明 (14)
实习总结 ............................................................................................. 错误!未定义书签。参考文献 ............................................................................................. 错误!未定义书签。
I
II
1 实习任务概述
课程名称:计算比赛成绩系统
基本功能:
(1)有9名评委,每个评委给分范围为0~10(整数):由键盘输入;
(2)9名评委给分中,去掉一个最高分和一个最低分,剩余7名评委的平均分即为参赛者的得分(精确到小数点后二位,不考虑四舍五入);
(3)将最后得分在光标位置处显示出来
2基本知识
2.1 汇编语言源程序结构
①用INT 21H返回DOS的程序结构模式
②定义了一个数据段,代码段包括开辟一段空间存放输入的成绩,另外还有存放各种提示语(输入提示语,输出提示语等)。
③定义了一个代码段,主要存放源程序代码。
2.2 汇编语言上机过程
①调用全屏幕编辑程序WordStar或PCED或EDLTN,建立和修改源程序;
②将源程序经过汇编,变成机器代码形式的目标文件(OBJ); ③经过连接程序处
理,形成可执行文件(EXE);
④利用DEBUG调试程序单步执行或利用设断点的方法运行EXE程序,检查程序中的
错误。
2.3关键指令介绍
数据传送指令:MOV,PUSH,POP,LEA
算术指令:ADD,SUB,MUL,DIV,INC,DEC,CMP
控制转移指令:JMP,JL,JG,JNL,JE
3课题分析
3
3.1程序功能分析
从键盘输入九个0~10的数,除去最大数和最小数,求剩余数的平均数。
3.2主程序流程图
4
4详细设计
4.1菜单模块
main proc far
START:
push ds
sub ax,ax
push ax
MOV AX,DATAS
MOV DS,AX
call input ;输入9个数,数之间用空格隔开
call sort ;冒泡排序
call crlf ;换行
;mov si,2
call sum ;排序后,求第二个至倒数第二个数的和call cursor ;光标
;mov bx,gradeavg
;call binidec ;十进制输出平均成绩
;call output
ret
main endp
5
4.2输入模块
input proc near
lea dx,mess1
mov ah,09
int 21h
call crlf
mov si,0
;mov count,0
ent:
call decibin ;输入一个成绩
;inc count
cmp dl,' ' ;如果输入空格,则表示输入下一个数
je store
cmp dl,13 ;如果输入回车,则表示输入完毕
je exit1
jne error ;否则显示输入错误
store:
mov grade[si],bx
add si,2
jmp ent
error:
lea dx,mess2
mov ah,09
int 21h
exit1:
mov grade[si],bx
call crlf
ret
input endp
decibin proc near ;输入一个成绩
mov bx,0
mov dx,0
newchar:
mov ah,01h
int 21h
mov dl,al
sub al,30h ;asc码减去30h得出数字
jl exit
cmp al,09d
jg exit ;如果输入的不在'1~9'范围内,则结束本次输入
cbw
xchg ax,bx
mov cx,10d ;第一位数字乘以10,加上第二位数字,得到二位十进制数
6