汇编利用dosbox 0.74-3写出一个程序,实现以下功能:1、主要功能 设计一个班级成绩管理系统;统计计算学生的成绩,然后对学生的按统计成绩进行排名,最后输出学生的名次; 基本要求 接收从键盘输入的一个班的学生成绩,并存放于30字的grade数组中,各数据的格式为: 学号,成绩1,成绩2,...,成绩5 然后根据grade中的学生成绩,把学生名次填入rank数据组中,并显示出来, 格式为: 学号,名次

时间: 2024-02-24 11:54:46 浏览: 48
下面是一个简单的汇编程序,用于实现您的班级成绩管理系统。程序利用DOSBox 0.74-3运行,接收从键盘输入的学生成绩,然后按照成绩进行排名,并输出学生的名次。请注意,此程序是一个简单的示例,您可能需要根据自己的需求进行修改。 ``` .model small .stack 100h .data grade db 30 dup(0) ; 存储学生成绩 rank db 30 dup(0) ; 存储学生名次 count dw 0 ; 学生数量 newline db 0dh, 0ah, '$' .code start: mov ax, @data ; 初始化数据段寄存器 mov ds, ax ; 从键盘输入学生成绩 mov ah, 0ah ; 功能号为0ah,从键盘缓冲区输入字符串 mov dx, offset grade ; 输入的字符串存储在grade数组中 int 21h ; 调用DOS中断 ; 统计学生数量 mov si, offset grade ; si指向grade数组 mov cx, 30 ; 循环30次 xor ax, ax ; 清零ax寄存器,用于计数 loop1: cmp byte ptr [si], 0 ; 如果学号为0,则退出循环 je exit_loop1 inc ax ; 计数器加1 add si, 7 ; 每个学生占据7个字节,跳过成绩 loop loop1 exit_loop1: mov count, ax ; 存储学生数量 ; 计算学生名次 mov si, offset grade ; si指向grade数组 mov di, offset rank ; di指向rank数组 mov bx, count ; 循环count次 loop2: xor ax, ax ; 清零ax寄存器,用于比较成绩 mov al, [si+1] ; 取出第一个成绩 cmp al, [si+2] ; 比较第一个成绩和第二个成绩 jl swap ; 如果第一个成绩小于第二个成绩,则交换两个成绩 mov al, [si+1] ; 取出第一个成绩 cmp al, [si+3] ; 比较第一个成绩和第三个成绩 jl swap ; 如果第一个成绩小于第三个成绩,则交换两个成绩 mov al, [si+1] ; 取出第一个成绩 cmp al, [si+4] ; 比较第一个成绩和第四个成绩 jl swap ; 如果第一个成绩小于第四个成绩,则交换两个成绩 mov al, [si+1] ; 取出第一个成绩 cmp al, [si+5] ; 比较第一个成绩和第五个成绩 jl swap ; 如果第一个成绩小于第五个成绩,则交换两个成绩 jmp no_swap ; 否则不用交换 swap: xchg [si+1], [si+2] ; 交换第一个成绩和第二个成绩 xchg [di], [di+1] ; 交换名次 no_swap: inc di ; 增加名次 add si, 7 ; 每个学生占据7个字节,跳过成绩 dec bx ; 循环计数器减1 jnz loop2 ; 如果循环计数器不为0,则继续循环 ; 输出学生名次 mov ah, 9 ; 功能号为9,输出字符串 mov si, offset grade ; si指向grade数组 mov di, offset rank ; di指向rank数组 mov cx, count ; 循环count次 loop3: mov dx, si ; 输出学号 int 21h mov dx, offset newline ; 输出换行符 int 21h mov dx, di ; 输出名次 int 21h mov dx, offset newline ; 输出换行符 int 21h add si, 7 ; 每个学生占据7个字节,跳过成绩 inc di ; 增加名次 loop loop3 ; 程序结束 mov ah, 4ch ; 功能号为4ch,程序结束 int 21h end start ```

相关推荐

最新推荐

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

DSP实验报告—实验3 编写一个以汇编(ASM)语言为基础的DSP程序

1.学习用汇编语言编制程序;了解汇编语言程序与 C 语言程序的区别和在设置上的不同。 2.了解 TMS320C28x 汇编语言程序结果和一些简单的汇编语句用法。 3.学习在 CCS 环境中调试汇编代码。
recommend-type

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

课程设计----学生成绩档案管理系统设计 微机原理与接口技术 用汇编语言编写程序,设计一个学生成绩档案管理系统。要求该系统具有如下6个的基本功能:1输入;2 显示;3查找;4修改;5 排序;6退出。界面以菜单形式...
recommend-type

99秒马表设计 单片机 汇编 一个键控制 0-99秒显示 开始 暂停 复位

(1. 开始时,显示“00”,第1次按下SP1后就开始计时。 (2. 第2次按SP1后,计时停止。 (3. 第3次按SP1后,计时归零
recommend-type

汇编语言钢琴程序课程设计.doc

计算机钢琴程序——编写程序,运用端口进行控制外设,程序运行时使PC机成为一架可弹奏的钢琴,当用户按下数字键1-8时,计算机能进行判断,对应的依次发出1,2,3,4,5,6,7,i音调。按CTRL-C则退出钢琴状态。
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

spring添加xml配置文件

1. 创建一个新的Spring配置文件,例如"applicationContext.xml"。 2. 在文件头部添加XML命名空间和schema定义,如下所示: ``` <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans
recommend-type

JSBSim Reference Manual

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