输入的一个班的学生成绩(汇编语言) 下载本文

内容发布更新时间 : 2024/9/29 21:30:03星期一 下面是文章的全部内容请认真阅读。

《 汇 编 语 言》课程综合性实验报告

开课实验室: 年 月 日 实验题目 一、实验目的 显示学生名次表 进行汇编语言程序设计应用的综合性训练。综合运用汇编语言循环程序和程序编程方法,巩固提高汇编语言程序设计能力应用水平。 二、设备与环境 PC兼容机、Windows操作系统、汇编程序masm611 三、实验内容 编制一程序,要求接收从键盘输入的一个班的学生成绩,并存放于50字节的GRADE数组中,其中GRADE+N保存学号N+1的学生成绩。然后根据GRADE中的学生成绩,把学生名次填入50字节的RANK数组中,其中RANK+N的内容是学号为N+1学生的名次。再按学号把学生顺序把学生名次显示出来 四、实验结果及分析(包括①已完成什么功能,②如何实现的、遇到的问题和解决办法、流程图和关键代码解释,③收获和体会等) (1)完成的功能:动态输入学生学号和成绩,对学生成绩进行排序并设置名次,再按学号把学生成绩和名次显示出来。 (2)实现办法:充分运用宏汇编实现回车换行、数据的输入和输出,使用过程定义伪操作实现排名次和学生学号、成绩和名次的显示。 (3)流程图: 调用input子程序 Y 是否继续输入 N 输入学号和成绩 开始 调用rank子程序 成绩排序并设置名次 调用print子程序 按学号显示成绩和名次 结束 (4)关键代码: 1、数据段定义: DATAS SEGMENT n db 0 mc db 50 dup (0) cj db 50 dup (?) xh db 50 dup (?) m1 db 13,10,'Please input the ID: ',13,10,'$' m2 db 13,10,'Please input the mark:',13,10,'$' m3 db 13,10,'Do you want to continue ?,',13,10,'$' s1 db 13,10, '**********************************',13,10,'$' s2 db 13,10,'ID mark rank ',13,10,'$' kongge db ' ','$' DATAS ENDS 2、数据输入、输出宏定义: shuru macro mov ah,1 int 21h sub al,30h cbw mov bl,10 mul bl mov dl,al mov ah,1 int 21h sub al,30h add dl,al endm

第 1 页

shuchu macro num mov al,num cbw mov bl,10 div bl mov bl,ah mov dl,al add dl, 30h mov ah,2 int 21h mov dl,bl add dl,30h mov ah,2 int 21h endm 3、排序并设置名次: rank proc near mov ah,0 mov al,1 mov si,0 mov cl,n mov ch,0 mov dl,99 mov bh,0 e1: push cx e2: mov bl,cj[si] cmp bl,dl jne e4 add mc[si],al add bh,1 cmp bh,1 je e6 jmp e4 e3: sub al,1 e4: add si,1 loop e2 cmp bh,0 jne e5 pop cx mov bh,0 sub dl,1 cmp dl,-1 mov si,0 je e7 jmp e1 e5: pop ax

第 2 页