- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
华北科技学院综合性
实 验 报 告
课程名称 汇 编 语 言
实验学期 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
文档评论(0)