汇编利用DosBox 0.74写出程序满足以下条件:接收从键盘输入的一个班的学生成绩,并存放于30字的grade数组中,各数据的格式为: 学号,成绩1,成绩2,...,成绩5 然后根据grade中的学生成绩,把学生名次填入rank数据组中,并显示出来, 格式为: 学号,名次

时间: 2023-11-26 10:03:35 浏览: 41
好的,以下是一个示例程序,可以满足你的要求: ``` .model small .stack 100h .data msg1 db '请输入第', 0 msg2 db '号学生的成绩:', 0 newline db 10, 13, '$' grade db 30 dup(0) ; 存放学生成绩的数组 rank db 30 dup(0) ; 存放学生名次的数组 count db 0 ; 学生个数计数器 i db 0 ; 循环计数器 j db 0 ; 循环计数器 temp db 0 ; 交换用的临时变量 pos db 0 ; 当前位置 ranknum db 1 ; 名次计数器 studentid db 0 ; 学生ID marks db 5 dup(0) ; 学生成绩 .code main proc mov ax, @data mov ds, ax ; 循环读入学生成绩 loop1: mov ah, 09h ; 显示提示信息 mov dx, offset msg1 int 21h mov ah, 01h ; 读入学生ID int 21h sub al, 48 ; 将ASCII码转换为数字 mov studentid, al mov ah, 09h ; 显示提示信息 mov dx, offset msg2 int 21h ; 读入5门成绩 mov i, 0 loop2: mov ah, 01h int 21h sub al, 48 ; 将ASCII码转换为数字 mov marks[i], al inc i cmp i, 5 jne loop2 ; 将学生ID和成绩存入数组 mov pos, count mov al, studentid mov grade[pos], al mov i, 0 mov j, pos mov bx, offset grade add bx, j add bx, 1 ; 跳过学生ID loop3: mov al, marks[i] mov [bx], al inc i inc bx cmp i, 5 jne loop3 inc count ; 学生个数加1 cmp count, 30 ; 如果已经输入了30个学生,则退出循环 je endloop1 jmp loop1 endloop1: ; 计算学生名次 mov i, 0 loop4: mov j, i inc j mov bx, offset grade add bx, i add bx, 1 ; 跳过学生ID loop5: mov al, [bx] mov temp, al mov bx, offset grade add bx, j add bx, 1 ; 跳过学生ID mov al, [bx] cmp temp, al jge skip ; 交换位置 mov al, grade[i] mov bl, grade[j] mov grade[i], bl mov grade[j], al ; 名次加1 mov rank[j], ranknum mov ranknum, j+1 skip: inc j cmp j, count ; 如果j等于count,则退出内层循环 je endloop5 jmp loop5 endloop5: mov rank[i], ranknum ; 记录当前学生名次 mov ranknum, i+2 ; 下一个排名为当前排名加1 inc i cmp i, count ; 如果i等于count,则退出外层循环 je endloop4 jmp loop4 endloop4: ; 显示学生名次 mov i, 0 loop6: mov ah, 02h mov dl, grade[i] add dl, 48 ; 将数字转换为ASCII码 int 21h mov ah, 09h mov dl, ',' int 21h mov ah, 02h mov dl, rank[i] add dl, 48 int 21h mov ah, 09h mov dx, offset newline int 21h inc i cmp i, count ; 如果i等于count,则退出循环 je endloop6 jmp loop6 endloop6: mov ah, 4ch int 21h main endp end main ``` 这个程序首先会提示用户输入学生的学号和成绩,然后将它们存入grade数组中。接下来,程序会使用冒泡排序计算学生的名次,并将名次存入rank数组中。最后,程序会显示每个学生的学号和名次。 请注意,这只是一个示例程序,你可以根据自己的需求进行修改。同时,该程序可能存在一些问题,需要你自行检查和改进。

相关推荐

最新推荐

recommend-type

汇编 从键盘输入一个数字N(0~9),然后显示N个大写字母“A”

(1)键盘输入使用21H功能调用 MOV AH,1 INT 21H ;输入字符的ASCII码将保存在AL寄存器中 (2)将输入数字的ASCII码转换成数字本身 (3)循环输出
recommend-type

汇编程序DOSBox实验1.doc

1.在数据段DATA中有两个字数据X和Y, 假设X=1122H, Y=3344H, 编程求两个字的和,结果存放到Z单元中. 2.从SOURCE_BUFFER单元开始存放了20个字母A, 编程将这20个字母A的字符串传送到DEST_BUFFER开始的单元中. 3.从SOURCE...
recommend-type

华中科技大学电信专业 课程资料 作业 代码 实验报告-数据结构-内含源码和说明书.zip

华中科技大学电信专业 课程资料 作业 代码 实验报告-数据结构-内含源码和说明书.zip
recommend-type

java 游戏飞翔的小鸟

java 制作游戏 飞翔的小鸟
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

用 Python 画一个可以动的爱心

好的,我可以帮助您使用Python来绘制一个动态的爱心。您可以使用turtle库来实现。以下是实现代码: ```python import turtle import math # 设置画布和画笔 canvas = turtle.Screen() canvas.bgcolor("black") pencil = turtle.Turtle() pencil.speed(0) pencil.color("red", "pink") pencil.pensize(3) # 定义爱心函数 def draw_love(heart_size, x_offset=0, y_offset=0):
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依