汇编编程:根据成绩数组cj中保存的10个学生的成绩,统计相应学生的名次并填入名次数组mc中

时间: 2024-02-01 16:16:16 浏览: 24
下面是用汇编语言实现的代码: ``` .model small .stack 100h .data cj db 70, 80, 90, 60, 75, 85, 95, 65, 77, 88 mc db 10 dup(0) .code main proc mov ax, @data mov ds, ax mov cx, 10 ; 循环10次,对每个学生进行排名 lea si, cj ; 将数组cj的地址加载到si寄存器中 lea di, mc ; 将数组mc的地址加载到di寄存器中 mov bx, 1 ; 初始化名次为1 L1: mov al, [si] ; 取出当前学生的成绩 mov ah, [di] ; 将当前学生的名次存入名次数组mc中 cmp al, [si+1] ; 比较当前学生的成绩和下一个学生的成绩 jge L2 ; 如果当前学生的成绩大于等于下一个学生的成绩,跳转到L2 inc bx ; 否则,名次加1 L2: inc si ; 指向下一个学生的成绩 inc di ; 指向下一个学生的名次 dec cx ; 循环计数器减1 jnz L1 ; 如果还有学生,继续循环 mov ah, 4ch ; 退出程序 int 21h main endp end main ``` 以上代码中,使用了两个指针si和di分别指向成绩数组cj和名次数组mc。使用了一个循环计数器cx,每次循环取出当前学生的成绩,并比较当前学生的成绩和下一个学生的成绩大小,根据大小关系更新名次。最后,将名次数组mc中的数据输出即可。
相关问题

汇编编程:根据成绩数组cj中保存的10个学生的成绩,统计相应学生的名次并填入名次数组mc中并输出mc数组

以下是使用x86汇编语言实现的代码: ```assembly ; 数据段 .data cj db 80, 90, 70, 85, 95, 60, 75, 65, 100, 55 ; 存储10个学生的成绩 mc db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; 存储10个学生的名次,初始值为0 ; 代码段 .code main proc mov ax, @data mov ds, ax ; 初始化数据段寄存器 mov cx, 10 ; 循环10次,对每个学生进行处理 mov si, 0 ; si寄存器用于存储当前处理的学生的索引,初始值为0 loop_start: mov al, cj[si] ; 加载当前学生的成绩 mov bh, 1 ; bh寄存器用于存储当前学生的名次,初始值为1 inner_loop_start: cmp al, cj[bx] ; 将当前学生的成绩与其他学生的成绩逐一比较 jg inner_loop_end ; 如果当前学生成绩高于其他学生的成绩,则跳出循环 inc bh ; 否则将当前学生的名次加1 inc bx ; bx寄存器用于存储当前比较的学生的索引,加1后继续比较 jmp inner_loop_start inner_loop_end: mov mc[si], bh ; 将当前学生的名次存入名次数组 inc si ; 处理下一个学生 loop loop_start ; 输出名次数组 mov cx, 10 ; 循环10次,输出名次数组中的所有元素 mov si, 0 ; si寄存器用于存储当前输出的元素的索引,初始值为0 output_loop_start: mov dl, mc[si] ; 加载当前要输出的名次 add dl, 48 ; 将数字转换为ASCII码 mov ah, 02h ; 使用dos中断21h中的02h功能,输出一个字符 int 21h mov ah, 02h ; 使用dos中断21h中的02h功能,输出一个空格 mov dl, ' ' int 21h inc si ; 处理下一个元素 loop output_loop_start mov ah, 4Ch ; 使用dos中断21h中的4Ch功能,退出程序 int 21h main endp end main ``` 该代码实现了对成绩数组中每个学生的成绩进行遍历,并针对每个学生计算出其名次,并将名次存入名次数组中。最后,输出名次数组中的所有元素。 需要注意的是,在比较当前学生的成绩和其他学生的成绩时,使用了bx寄存器存储当前比较的学生的索引。由于bh寄存器已经被用于存储当前学生的名次,因此在比较学生成绩时需要使用bx寄存器的低8位存储学生的索引。

汇编编程:根据成绩数组cj中保存的10个学生的成绩,统计相应学生的名次并填入名次数组mc中 (提示:一个学生的名次等于成绩高于该学生的人数加1)。

以下是一份汇编程序,根据输入的成绩数组,统计每个学生的名次并存入名次数组中: ``` .MODEL SMALL .STACK 100H .DATA cj DB 80, 90, 85, 70, 75, 95, 85, 80, 90, 85 mc DB 10 DUP(0) .CODE MOV AX, @DATA MOV DS, AX ; 外层循环,遍历每个学生 MOV CX, 10 MOV BX, 0 ; BX 存储当前学生的分数 MOV DI, 0 ; DI 存储当前学生的名次 L1: MOV BL, cj[BX] ; 内层循环,统计高于当前学生分数的学生数目 MOV SI, 0 ; SI 存储高于当前学生的分数 MOV DX, CX ; DX 存储剩余未遍历的学生数 L2: CMP DX, 0 JE DONE MOV AL, cj[SI] CMP BL, AL JGE SKIP INC DI SKIP: INC SI DEC DX JMP L2 DONE: MOV mc[BX], DI+1 ; 名次 = 高于当前学生数目 + 1 INC BX DEC CX CMP CX, 0 JNE L1 MOV AH, 4CH INT 21H END ``` 程序中使用了两层循环,外层循环遍历每个学生,内层循环统计高于当前学生分数的学生数目。最终结果存储在名次数组mc中。

相关推荐

最新推荐

recommend-type

用汇编语言实现学生成绩统计分析

用汇编语言实现学生成绩统计分析,实验内容:编制一个程序,统计低于60分,60~69分,70~79分,80~89分,90~99分和100分的人数,并输出显示统计结果。1、成绩分等部分采用分支结构,统计所有成绩则用循环结构完成...
recommend-type

汇编语言 实验报告(斐波那契数列 统计学生成绩)

2 设计10个学生的成绩分别为56、69、84、82、73、88、99、63、100和80分。试编制程序分别统计低于60分、60-69分、70-79分、80-89分、90-99分及100分的人数,并存放到S5、S6、S7、S8、S9及S10单元中
recommend-type

汇编实验 源码 斐波那契函数FIB(N) 统计学生成绩

一、实验--斐波那契函数FIB(N) 3 1.实验目的和要求 3 ...二、实验--统计学生成绩 7 1.实验目的和要求 7 2.实验内容描述 7 3.程序流程图 8 4.程序源码 9 5.运行结果 10 三、心得体会 10 四、参考文献 11
recommend-type

防雷及短路计算软件.zip

防雷及短路计算软件
recommend-type

电线穿管选用小软件.zip

电线穿管选用小软件
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

用matlab绘制高斯色噪声情况下的频率估计CRLB,其中w(n)是零均值高斯色噪声,w(n)=0.8*w(n-1)+e(n),e(n)服从零均值方差为se的高斯分布

以下是用matlab绘制高斯色噪声情况下频率估计CRLB的代码: ```matlab % 参数设置 N = 100; % 信号长度 se = 0.5; % 噪声方差 w = zeros(N,1); % 高斯色噪声 w(1) = randn(1)*sqrt(se); for n = 2:N w(n) = 0.8*w(n-1) + randn(1)*sqrt(se); end % 计算频率估计CRLB fs = 1; % 采样频率 df = 0.01; % 频率分辨率 f = 0:df:fs/2; % 频率范围 M = length(f); CRLB = zeros(M,1); for
recommend-type

JSBSim Reference Manual

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