用汇编语言编制程序:设有10个学⽣的成绩分别为46、68、88、87、76、89、99、65、100和80分。统计低于60分、60~69分、70~79分、80~89分、90~99分及100分的⼈数,并存放到S5、S6、S7、S8、 S9及S10单元中。
时间: 2023-10-26 13:05:34 浏览: 85
编程序实现设有10个学生的成绩分别为85、62、64、79、82、99、100、78、88、86,试编制一个子程序统计60~69分,70~79分 ,80~89分,90~99分及100分的人数,分别存放到S6,S7,S8,S9及S10单元中。
4星 · 用户满意度95%
以下是用汇编语言编写的程序,可以实现该功能:
```
ORG 100h
MOV CX, 10 ; CX寄存器存储学生数量
MOV SI, 0 ; SI寄存器存储成绩数组的下标
MOV BX, 0 ; BX寄存器存储低于60分的人数
MOV DX, 0 ; DX寄存器存储60~69分的人数
MOV BP, 0 ; BP寄存器存储70~79分的人数
MOV AX, 0 ; AX寄存器存储80~89分的人数
MOV S5, 0 ; S5单元存储90~99分的人数
MOV S6, 0 ; S6单元存储100分的人数
MOV AL, 46 ; 将第一个学生的成绩存入AL寄存器
CMP AL, 60 ; 判断成绩是否低于60分
JB LOW ; 如果是,则跳转到LOW标签
CMP AL, 70 ; 判断成绩是否在60~69分之间
JB SIXTY
CMP AL, 80 ; 判断成绩是否在70~79分之间
JB SEVENTY
CMP AL, 90 ; 判断成绩是否在80~89分之间
JB EIGHTY
CMP AL, 100 ; 判断成绩是否为100分
JE HUNDRED
JMP NEXT ; 跳转到下一个学生的成绩
LOW: ; 处理低于60分的情况
INC BX ; 低于60分的人数加1
JMP NEXT
SIXTY: ; 处理60~69分的情况
INC DX ; 60~69分的人数加1
JMP NEXT
SEVENTY: ; 处理70~79分的情况
INC BP ; 70~79分的人数加1
JMP NEXT
EIGHTY: ; 处理80~89分的情况
INC AX ; 80~89分的人数加1
JMP NEXT
HUNDRED: ; 处理100分的情况
INC S6 ; 100分的人数加1
JMP NEXT
NEXT: ; 处理下一个学生的成绩
INC SI ; 数组下标加1
CMP SI, CX ; 判断是否处理完了所有学生的成绩
JE END ; 如果是,则跳转到程序结束
MOV AL, [SCORE + SI] ; 将下一个学生的成绩存入AL寄存器
CMP AL, 60 ; 判断成绩是否低于60分
JB LOW ; 如果是,则跳转到LOW标签
CMP AL, 70 ; 判断成绩是否在60~69分之间
JB SIXTY
CMP AL, 80 ; 判断成绩是否在70~79分之间
JB SEVENTY
CMP AL, 90 ; 判断成绩是否在80~89分之间
JB EIGHTY
CMP AL, 100 ; 判断成绩是否为100分
JE HUNDRED
JMP NEXT
END: ; 程序结束
MOV S5, AX ; 将80~89分的人数存入S8单元
MOV S7, BP ; 将70~79分的人数存入S7单元
MOV S9, DX ; 将60~69分的人数存入S9单元
MOV S10, BX ; 将低于60分的人数存入S10单元
HLT ; 程序结束
SCORE DB 46, 68, 88, 87, 76, 89, 99, 65, 100, 80 ; 学生成绩数组
S5 DB ? ; 存储90~99分的人数
S6 DB ? ; 存储100分的人数
S7 DB ? ; 存储70~79分的人数
S8 DB ? ; 存储80~89分的人数
S9 DB ? ; 存储60~69分的人数
S10 DB ? ; 存储低于60分的人数
END
```
阅读全文