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

时间: 2024-02-03 19:02:49 浏览: 29
好的,以下是满足要求的汇编代码: ``` .model small .stack 100h .data grade db 30 dup(?) rank db 30 dup(?) newline db 0ah, 0dh, '$' prompt db '请输入学生成绩(学号,成绩1-5):$' message db '学号,名次', 0ah, 0dh, '$' num_students dw 0 max_grade db 0 .code mov ax, @data mov ds, ax ; 接收学生成绩 mov cx, 30 ; 最多接受30个学生成绩 mov si, offset grade ; 存放学生成绩的数组的偏移地址 input_loop: mov ah, 9 ; 显示提示信息 mov dx, offset prompt int 21h ; 读取用户输入 mov ah, 0ah mov dx, si int 21h ; 计算最高成绩和学生数量 mov al, [si+1] ; 第1个字节是成绩1,因此要偏移1 cmp al, max_grade jle not_new_max ; 更新最高成绩和学生数量 mov max_grade, al mov num_students, 1 jmp end_input_loop not_new_max: ; 如果成绩不是最高的,检查是否与最高成绩相同 cmp al, max_grade jne end_input_loop ; 如果成绩与最高成绩相同,增加学生数量 inc num_students end_input_loop: ; 判断是否继续接收输入 loop input_loop ; 计算学生名次 mov cx, 30 ; 最多计算30个学生的名次 mov si, offset grade ; 存放学生成绩的数组的偏移地址 rank_loop: cmp cx, 0 ; 是否遍历完了所有学生 je end_rank_loop ; 如果这个学生的成绩是最高的,名次就是1 mov al, [si+1] ; 第1个字节是成绩1,因此要偏移1 cmp al, max_grade je set_rank_one ; 如果这个学生的成绩不是最高的,检查是否与最高成绩相同 cmp al, max_grade jne increment_rank ; 如果这个学生的成绩与最高成绩相同,名次与最高成绩的学生名次相同 mov dl, [rank] ; 复制最高成绩的学生名次 mov [rank+si-offset grade], dl ; 存储学生名次 ; 继续遍历下一个学生 jmp next_student set_rank_one: ; 如果这个学生的成绩是最高的,名次就是1 mov dl, 1 mov [rank+si-offset grade], dl ; 存储学生名次 ; 继续遍历下一个学生 jmp next_student increment_rank: ; 如果这个学生的成绩不是最高的,增加名次 mov dl, [rank] ; 复制上一个学生的名次 inc dl ; 增加名次 mov [rank+si-offset grade], dl ; 存储学生名次 ; 继续遍历下一个学生 jmp next_student next_student: add si, 6 ; 下一个学生的数据在数组中偏移6个字节 loop rank_loop end_rank_loop: ; 显示学号和名次 mov ah, 9 mov dx, offset message int 21h mov cx, 30 ; 最多显示30个学生 mov si, offset grade ; 存放学生成绩的数组的偏移地址 display_loop: cmp cx, 0 ; 是否遍历完了所有学生 je end_display_loop ; 显示学号和名次 mov ah, 2 ; 显示字符 mov dl, [si] ; 第0个字节是学号 int 21h mov ah, 2 ; 显示字符 mov dl, ',' int 21h mov ah, 2 ; 显示字符 mov dl, [rank+si-offset grade] ; 第i个学生的名次 add dl, 30h ; 转换成ASCII码 int 21h mov ah, 2 ; 显示字符 mov dl, newline int 21h ; 继续遍历下一个学生 add si, 6 ; 下一个学生的数据在数组中偏移6个字节 loop display_loop end_display_loop: mov ah, 4ch ; 退出程序 int 21h end ``` 请注意,此程序假定用户输入的数据格式正确,并且没有进行任何错误检查。如果需要进行错误检查,请在相应的位置添加适当的代码。

相关推荐

最新推荐

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

安全隐患台账(模版).xls

安全隐患台账(模版).xls
recommend-type

基于 Java+Mysql 实现的小型仓库管理系统-课程设计(含课设文档+源码)

【作品名称】:基于 Java+Mysql 实现的小型仓库管理系统-课程设计(含课设文档+源码) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:项目说明 1、项目结构:maven+mvc(M模型用的是mybatis技术) 2、项目模式:C/S(客户机/服务器)模式 3、编辑器:IDEA 2019.3.1 4、mysql版本号:5.1.38
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

优化MATLAB分段函数绘制:提升效率,绘制更快速

![优化MATLAB分段函数绘制:提升效率,绘制更快速](https://ucc.alicdn.com/pic/developer-ecology/666d2a4198c6409c9694db36397539c1.png?x-oss-process=image/resize,s_500,m_lfit) # 1. MATLAB分段函数绘制概述** 分段函数绘制是一种常用的技术,用于可视化不同区间内具有不同数学表达式的函数。在MATLAB中,分段函数可以通过使用if-else语句或switch-case语句来实现。 **绘制过程** MATLAB分段函数绘制的过程通常包括以下步骤: 1.
recommend-type

SDN如何实现简易防火墙

SDN可以通过控制器来实现简易防火墙。具体步骤如下: 1. 定义防火墙规则:在控制器上定义防火墙规则,例如禁止某些IP地址或端口访问,或者只允许来自特定IP地址或端口的流量通过。 2. 获取流量信息:SDN交换机会将流量信息发送给控制器。控制器可以根据防火墙规则对流量进行过滤。 3. 过滤流量:控制器根据防火墙规则对流量进行过滤,满足规则的流量可以通过,不满足规则的流量则被阻止。 4. 配置交换机:控制器根据防火墙规则配置交换机,只允许通过满足规则的流量,不满足规则的流量则被阻止。 需要注意的是,这种简易防火墙并不能完全保护网络安全,只能起到一定的防护作用,对于更严格的安全要求,需要
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。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依