汇编语言计算比赛成绩系统

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档