汇编语言:在以GRADE为首地址的数组中存放着某班某门课30个学生的成绩。试编写一完整汇编语言程序实现:统计小于60分,60~89分和大于等于90分的学生人数,统计结果分别存放在LOWNUM、MIDD

在以GRADE为首地址的数组中存放着某班某门课30个学生的成绩。试编写一完整汇编语言程序实现:统计小于60分,60~89分和大于等于90分的学生人数,统计结果分别存放在LOWNUM、MIDDLENUM和HIGHNUM单元中
这里写图片描述

data segment
    GRADE   DW 54h,68h,56h,59h,35h,48h,4dh, 44h,5ah,60h,...;学生成绩数组
    LOWNUM    DW ?    ;保存不及格人数
    MIDDLENUM  DW ?   ;保存60-89之间人数
    HIGHNUM       DW ?    ;保存90分以上人数
data ends
code segment
    ASSUME CS:code,DS:data
START:mov ax,data
    mov ds,ax
    lea di,GRADE
    mov cx,30   
loop1:
    mov ax,WORD PTR [di]
    cmp ax,60
    jae domiddle
    inc LOWNUM
    jmp continue
domiddle:
    cmp ax,90
    jae dohigh
    inc MIDDLENUM
    jmp continue
dohigh:
    inc HIGHNUM
continue:
    add di,2
loop loop1
    mov ah,4ch
    int 21h
code ends
end start
  • 11
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
我们可以使用汇编语言实现这三个子程序,以下是代码: ``` DATA SEGMENT GRADE DB 60, 70, 80, 90, 65, 75, 85, 95, 62, 72, 82, 92, 68, 78, 88, 98, 58, 68, 78, 88 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA SUM PROC MOV AX, 0 MOV SI, OFFSET GRADE MOV CX, 20 ADD_LOOP: ADD AL, [SI] INC SI LOOP ADD_LOOP RET SUM ENDP AVESCORE PROC CALL SUM MOV BL, 20 DIV BL RET AVESCORE ENDP NUM1 PROC MOV AX, 0 MOV SI, OFFSET GRADE MOV CX, 20 NUM1_LOOP: CMP [SI], 60 JL NUM1_COUNT INC SI LOOP NUM1_LOOP RET NUM1 ENDP NUM2 PROC MOV AX, 0 MOV SI, OFFSET GRADE MOV CX, 20 NUM2_LOOP: CMP [SI], 90 JGE NUM2_COUNT INC SI LOOP NUM2_LOOP RET NUM2 ENDP CODE ENDS END ``` 以上代码使用了四个子程序:`SUM`用于计算总,`AVESCORE`用于计算平均,`NUM1`用于统计不及格人数,`NUM2`用于统计优秀学生人数。 其,`SUM`程序使用`AL`寄存器来累加成绩,最后返回结果。`AVESCORE`程序调用`SUM`程序来计算总,再除以总人数(20)来得到平均。`NUM1`程序使用`AX`寄存器来统计不及格人数,如果某个成绩小于60,就将计数器加一。`NUM2`程序使用`AX`寄存器来统计优秀学生人数,如果某个成绩大于等于90,就将计数器加一。 需要注意的是,以上代码使用了`DATA`和`CODE`两个段。`DATA`段用于存储成绩数组`GRADE`,而`CODE`段用于存放程序代码。在程序开始处,我们使用`ASSUME`语句来指定`CS`和`DS`寄存器的默认段寄存器值。最后,我们使用`END`语句来结束程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

StriveZs

用爱发电

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值