学生成绩数组:46、68、88、87、76、89、99、65、100、80,汇编编程根据成绩数组cj中保存的10个学生的成绩,统计学生的成绩名次并填入名次数组mc中。并提供完整的汇编程序代码和注释,能够输出名次。

时间: 2023-07-04 18:25:33 浏览: 44
好的,以下是根据您提供的题目要求编写的汇编程序代码和注释: ``` ; 学生成绩数组 cj db 46, 68, 88, 87, 76, 89, 99, 65, 100, 80 ; 名次数组,初始值为0 mc db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; 数据段 data segment ; 在数据段中定义两个指针变量,用于保存数组的基地址 cj_ptr db ? mc_ptr db ? data ends ; 代码段 code segment assume cs:code, ds:data start: ; 初始化数组指针 mov ax, data mov ds, ax mov cx, 10 mov cj_ptr, offset cj mov mc_ptr, offset mc ; 依次比较每个学生的成绩 mov bx, cx dec bx cmp_loop: ; 初始化内层循环的计数器 mov dx, bx mov ax, dx add ax, cx mov bx, ax ; 比较 cj[dx] 和 cj[bx] mov al, [cj_ptr+dx] cmp al, [cj_ptr+bx] jge not_greater ; 如果 cj[dx] < cj[bx],则将 mc[dx] 加 1 mov cl, [mc_ptr+dx] inc cl mov [mc_ptr+dx], cl ; 交换 cj[dx] 和 cj[bx] xchg al, [cj_ptr+bx] mov [cj_ptr+dx], al jmp next_cmp not_greater: ; 如果 cj[dx] >= cj[bx],则将 mc[bx] 加 1 mov cl, [mc_ptr+bx] inc cl mov [mc_ptr+bx], cl next_cmp: ; 判断内层循环是否结束 dec dx cmp dx, 0 jge cmp_loop ; 判断外层循环是否结束 dec cx cmp cx, 0 jne cmp_loop ; 输出名次 mov ah, 9 mov cx, 10 mov si, offset mc mov dl, '1' mov bl, 10 print_loop: mov al, dl int 21h mov al, ')' int 21h mov al, [si] add al, 48 int 21h mov al, bl int 21h inc dl inc si loop print_loop ; 程序结束 mov ah, 4ch int 21h code ends end start ``` 程序说明: 首先在数据段中定义了两个数组 `cj` 和 `mc`,分别保存了学生成绩和名次。然后定义了两个指针变量 `cj_ptr` 和 `mc_ptr`,用于保存数组的基地址。 在代码段中,首先初始化了数组指针和计数器,然后使用双重循环依次比较每个学生的成绩,并根据大小关系更新名次数组。最后使用 `int 21h` 中断输出名次,并结束程序。 需要注意的是,这里使用了 ASCII 码将数字转换为字符输出,因此需要加上字符 '0' 的 ASCII 码值 (48)。 另外,程序中的注释中使用了中文,实际上汇编语言的注释应该使用英文。

相关推荐

最新推荐

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

课程设计----学生成绩档案管理系统设计

用汇编语言编写程序,设计一个学生成绩档案管理系统。要求该系统具有如下6个的基本功能:1输入;2 显示;3查找;4修改;5 排序;6退出。界面以菜单形式显示, 每个学生的信息包含:学号、姓名、成绩,排序按照成绩...
recommend-type

DSP编程技巧之--从C/C++代码调用汇编代码中的函数与变量

在C/C++与汇编语言混合编程的情况下,一般我们都会选择C/C++来实现所期待的大部分功能,对于少数和硬件关联度高(例如操作某些CPU寄存器)以及对运算的实时性要求高(例如高速、多点的FFT)的功能才使用汇编来实现,这就...
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的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。