汇编程序:求平均成绩(用汇编玩结构体)

求平均成绩

  在下面的数据段中,给出了全班3名同学OS、AL、SE、DB课程的成绩,请编程计算出平均成绩,写在 ? 处。

datasg segment
  db '201558501111','MMTJAB  ',90,100,76,89,?
  db '201558501112','ZhangAP ',97,82,79,88,?
  db '201558501113','ShaoXL  ',77,98,89,91,?
  db 4 ;这是课程门数,将要用于作除数,偏移量为75
datasg ends

参考解答:

assume cs:codesg,ds:datasg, ss:stacksg
datasg segment
  db '201558501111','MMTJAB  ',90,100,76,89,?
  db '201558501112','ZhangAP ',97,82,79,88,?
  db '201558501113','ShaoXL  ',77,98,89,91,?
  db 4 ;这是课程门数,将要用于作除数,偏移量为75
datasg ends

stacksg segment stack
      dw 0,0,0,0,0,0,0,0
stacksg ends

codesg segment
start: mov ax, stacksg
       mov ss, ax
       mov sp, 16
       mov ax, datasg
       mov ds, ax
       mov bp, 0    ;基址,bx想用于数据处理了
       mov cx, 4    ;外层循环次数

   s0: push cx      ;保存外层循环数
       mov si, 0    ;ds:[bp+si+20]将是要处理的数值,第一科成绩前有20个字节是学号、姓名
       mov cx, 4    ;设置内层循环次数
       mov ax, 0    ;用于存储累加和,因为4门课总成绩可能会大于256,故用字
    s: mov bl, ds:[bp+si+20]  ;取成绩,100以内,用字节数据
       mov bh, 0           ;为下面一步用字进行加法准备
       add ax, bx    ;累加总分
       add si, 1     ;取下一字节
       loop s

       div byte ptr ds:[75] ;求均分
       mov ds:[bp+si+20], al  ;保存均分
       add bp, 25       ;下一位同学成绩的基址
       pop cx           ;恢复外层循环
       loop s0

       mov ax,4c00h
       int 21h
codesg ends
end start

注:在这个程序里,数据存储相当于C语言的结构体(由此体会汇编语言其实也是很强大的!)

struct Student{
  char num[12];
  char name[8];
  char OS;
  char AL;
  char SE;
  char DB;
  char aver;
};
struct Student stu[77];
时间: 2024-09-29 02:53:35

汇编程序:求平均成绩(用汇编玩结构体)的相关文章

HDOJ 2023 求平均成绩

Problem Description 假设一个班有n(n<=50)个学生,每人考m(m<=5)门课,求每个学生的平均成绩和每门课的平均成绩,并输出各科成绩均大于等于平均成绩的学生数量. Input 输入数据有多个测试实例,每个测试实例的第一行包括两个整数n和m,分别表示学生数和课程数.然后是n行数据,每行包括m个整数(即:考试分数). Output 对于每个测试实例,输出3行数据,第一行包含n个数据,表示n个学生的平均成绩,结果保留两位小数:第二行包含m个数据,表示m门课的平均成绩,结果保留

求教:CT课程的成绩是采用记录数组的形式存放的,请设计这样一个数组,并写出求班级平均成绩的命令式程序

问题描述 求教:CT课程的成绩是采用记录数组的形式存放的,请设计这样一个数组,并写出求班级平均成绩的命令式程序 求教:CT课程的成绩是采用记录数组的形式存放的,请设计这样一个数组,并写出求班级平均成绩的命令式程序 解决方案 命令式编程语言就是一般的编程语言,比如c/basic等. 根据你的要求,无非就是遍历数组,然后求和,除以数量得到平均值.具体什么语言.比如C int sum = 0; for (int i = 0; i < count; i++) sum+= data[i]; float a

vc++-怎样用c++写“定义学生结构体数据(学号,姓名,三门成绩)输入,五个学生人数”

问题描述 怎样用c++写"定义学生结构体数据(学号,姓名,三门成绩)输入,五个学生人数" 求每名学生的平均成绩和没门课程的平均成绩第三小题 解决方案 struct stu { int no; char name[10]; int score[3]; }; stu data[5]; ... int sum = 0; for (int i = 0; i < 5; i++) { sum += data[i].score[i]; } double avg = sum / 5.0; cou

c-萌妹纸@C语言大神,学科平均分用结构体,此题跪求代码?

问题描述 萌妹纸@C语言大神,学科平均分用结构体,此题跪求代码? 题目: 班里10名同学,选修物理和数学的同学各有若干名. 现在录入同学学号,姓名,选修课程编号,以及其成 绩, 要求计算出物理.数学课程的平均分,各成绩段学 生数和比例,最高分及学生信息. 其中,分数(含平均分)都按百分制(整数处理) ,比例按浮点数处理,精确到小数点后两位.平均 分取整时按四舍五入处理,例如,74.5,四舍五入为 75.最高分可能有多个.(要求,分别建立班级类 ,课程类.班级类包含所有学生信息,课程类实例为 物理

数据库 sql语言-SQL Server创建存储过程,计算每个同学的平均成绩并标记“优秀学生”

问题描述 SQL Server创建存储过程,计算每个同学的平均成绩并标记"优秀学生" 如题:请用命令行创建存储过程,计算每个同学的平均成绩,写入S_AVG表,平均成绩大于85的学生,Flag标记为"优秀学生",平均成绩低于60的的学生,Flag标记为"延迟毕业",其他学生Flag标记为"常规学生". 能查到的有关例子太少了,自学不成功,求大神解答-- 解决方案 分步做 1.计算每个同学的平均成绩,写入S_AVG表 insert

c语言-求大神,C语言求 结构体

问题描述 求大神,C语言求 结构体 有5个学生,每个学生的数据包括学号.姓名.3门课的成绩,从键盘输入5个学生的数据,要求输出3门课总平均成绩,以及最高分的学生的数据. 要求用一个input函数输入3个学生数据,用一个average函数求总平均分,用max函数找出最高分的学生数据,总平均分和最高分的学生数据都在主函数中输出. 写到这里,报错太多,写不下去了 解决方案 首先,你的student结构体定义了没有.你有没有定义全局的stu,造成了冲突. 然后,你函数是不是和库函数冲突,比如max,在标

python里对list中的整数求平均并排序_python

问题 定义一个int型的一维数组,包含40个元素,用来存储每个学员的成绩,循环产生40个0~100之间的随机整数, (1)将它们存储到一维数组中,然后统计成绩低于平均分的学员的人数,并输出出来. (2)将这40个成绩按照从高到低的顺序输出出来. 解决(python) #! /usr/bin python #coding:utf-8 from __future__ import division #实现精确的除法,例如4/3=1.333333 import random def make_scor

C++第1周项目3——结构体数组处理学生成绩

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 [项目3]每位同学的信息学号.姓名.C++.高数.英语成绩,定义一个学生成绩的结构体数组,其中的数据成员包括学号(char num[12]).姓名(name).三门课的成绩(grade).总分(score).均分(average)).(1)从键盘上输入5名学生的信息:(2)求出每名同学的总分和均分,并存储在结构体数组中(可以读入过程中"顺便"计算):(3)输出求

(C语言完结)结构体在汇编中的表现形式

一丶了解什么是结构体,以及计算结构体成员的对其值以及总大小(类也是这样算) 结构体的特性 1.结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合 2.在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类. 结构体可以被声明为变量.指针或数组等,用以实现较复杂的数据结构.结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问.[1] 高级代