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

时间: 2024-02-20 15:56:30 浏览: 20
以下是一个简单的8086汇编程序,用于实现班级成绩管理系统: ``` .model small .stack 100h .data grade db 30*6 dup(0) ; 存放学生成绩的数组 rank db 30 dup(0) ; 存放学生名次的数组 n db 30 ; 学生人数 newline db 0dh, 0ah, '$' ; 换行符 .code start: mov ax, @data mov ds, ax ; 接收从键盘输入的学生成绩 mov si, offset grade mov cx, 30 input_loop: mov ah, 01h int 21h ; 读取一个字符 cmp al, '$' ; 判断是否结束输入 je input_done cmp al, ',' ; 判断是否为逗号 je next_grade sub al, '0' ; 将字符转换成数字 mov [si], al ; 将数字存入数组 inc si jmp input_loop next_grade: inc cx jmp input_loop input_done: ; 计算学生的成绩并排序 mov si, offset grade mov di, offset rank mov bx, 1 mov ax, 0 mov dx, 0 calc_loop: mov cx, 5 ; 一个学生有5门成绩 add ax, [si+1] ; 计算总成绩 add dx, ax mov bx, ax ; 将总成绩存入bx mov ax, 0 ; 清零ax sub cx, 1 jz sort_rank ; 如果计算完了5门成绩,就跳转到排序 add si, 1 ; 移动到下一门成绩 jmp calc_loop sort_rank: mov si, offset grade mov di, offset rank mov bx, 1 mov cx, 30 sort_loop: mov al, [si] ; 取出学生的总成绩 mov ah, 0 mov [di], bx ; 将名次存入rank数组 inc bx add si, 6 ; 移动到下一个学生的成绩 add di, 1 ; 移动到下一个名次 loop sort_loop ; 输出学生的名次 mov si, offset grade mov di, offset rank mov cx, 30 output_loop: mov ah, 09h ; DOS中断21h的打印字符函数 mov dx, offset newline int 21h mov ah, 02h ; 打印学号 mov dl, [si] int 21h mov ah, 02h ; 打印逗号 mov dl, ',' int 21h mov ah, 02h ; 打印名次 mov dl, [di] add dl, '0' ; 将数字转换成字符 int 21h add si, 6 ; 移动到下一个学生的成绩 add di, 1 ; 移动到下一个名次 loop output_loop ; 程序结束 mov ah, 4ch int 21h end start ``` 在DOSBox中编译和运行程序的步骤如下: 1. 将上述代码保存为一个文本文件(例如 `score.asm`)。 2. 打开DOSBox,进入代码所在的目录。 3. 输入 `masm score.asm`,编译代码并生成 .obj 文件。 4. 输入 `link score.obj`,将 .obj 文件链接成可执行文件。 5. 输入 `score.exe`,运行程序。程序会提示输入学生成绩,按照题目要求输入即可。程序会输出每个学生的名次。

相关推荐

最新推荐

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

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

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

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

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

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

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

基于三层感知机实现手写数字识别-内含源码和说明书.zip

基于三层感知机实现手写数字识别-内含源码和说明书.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

用 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的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。