汇编语言实验报告方案.doc
文本预览下载声明
华北科技学院综合性
实 验 报 告
课程名称 汇 编 语 言
实验学期 2013 至 2014 学年 第 2 学期
学生所在院部 计算机学院计算机工程系
年级 二年级 专业班级 计科B12-
学生姓名 学号
任课教师 李冬艳
实验成绩
计算机学院制
《 汇 编 语 言》课程综合性实验报告
开课实验室:基础实验室四 2015-05-26
实验题目 显示学生名次表 一、实验目的
进行汇编语言程序设计应用的综合性训练。综合运用汇编语言循环程序、子程序、宏指令编程方法,提高汇编语言程序设计能力的应用水平。
二、设备与环境
PC兼容机、Windows操作系统、汇编程序masm for windows 2012
三、实验内容
编制一程序,要求接收从键盘输入的一个班的学生的学号、姓名、成绩,对学生的成绩进行排序,最后把学号、姓名、学生成绩、名次显示出来。
实验要求:
1.必须画流程图。
2.本程序涉及汇编语言的多重循环、子程序及宏,其中 成绩输入、计算学生名次、显示学生名次都分别用子程序,也可用宏处理。
3.要求用菜单选择。具体要求:
输入1是数据录入并输出(包括姓名、学号、成绩);
输入2是排序后的数据输出(包括姓名、学号、成绩、名次);
输入3是可以按学号查找某学生,并输出其成绩,选择修改或不改成绩。
四、实验结果及分析(包括①已完成什么功能,②如何实现的、遇到的问题和解决办法、流程图和关键代码解释,③收获和体会等)
1.流程图
2、程序分析
程序开始,显示主菜单,通过选择进入程序调用。调用子程序INPUT,进入子程序:输出字符串:“input:”调用子程序input,输入数据后调用子程序copy进行数据转存。调用change把输入的数转换为二进制,保存到score2中。程序排名:用CX以栈的形式保存循环次数,把成绩送到AL中,和AL+1比较,小于交换,结束内循环,恢复外循环次数,结束外循环。调用print输出排序。最查找通过输入学号进行查找,如果找到进行修改。最后输出。
关键代码
DATAS ENDS
aa macro
mov ah,2
mov dl,10
int 21h
mov dl,13
int 21h
endm
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
mov es,ax
let0:mov ah,9 ;显示菜单
lea dx,menu
int 21h
mov ah,1
int 21h
cmp al,1 ;输入选择
jz prog1
cmp al,2
jz prog2
cmp al,3
jz prog3
cmp al,4
jz prog4
mov ah,9
lea dx,mess5
int 21h
jmp let0
prog1:call input ;调用input
jmp let0
prog2: ;调用排序、输出
mov ax,p
cmp ax,1
jl let0
call sort
call print
jmp let0
prog3: ;查找
mov ax,p
cmp ax,1
jl let0
mov ah,9
lea dx,mess6
int 21h
mov ah,10
lea dx,buffnumber
int 21h
mov al,buffnumber+1
add al,2
mov ah,0
mov ah,10
lea dx,buffname
int 21h
mov al,buffname+1
add al,2
mov ah,0
mov si,ax
mov buffn
显示全部