设有10个学生的成绩分别是76,69,84,90,73,88,99,63,100和80分.试统计60~69分, 70~79分,80~89分,90~99分和100分的人数并分别存放到S6、S7、S8、S9和S10单元中. 用宏汇编语言编写.
时间: 2024-06-08 19:09:29 浏览: 93
以下是用MASM汇编语言编写的程序:
```assembly
.MODEL SMALL
.386
.DATA
SCORES DB 76,69,84,90,73,88,99,63,100,80
S6 DB ?
S7 DB ?
S8 DB ?
S9 DB ?
S10 DB ?
COUNT DB 10
RANGE1 DB 60, 69
RANGE2 DB 70, 79
RANGE3 DB 80, 89
RANGE4 DB 90, 99
RANGE5 DB 100
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
MOV CX, COUNT
MOV SI, 0
MOV S6, 0
MOV S7, 0
MOV S8, 0
MOV S9, 0
MOV S10, 0
LOOP_START:
MOV AL, SCORES[SI]
CMP AL, RANGE1[0]
JL NOT_IN_RANGE1
CMP AL, RANGE1[1]
JG NOT_IN_RANGE1
INC S6
JMP NEXT_LOOP
NOT_IN_RANGE1:
CMP AL, RANGE2[0]
JL NOT_IN_RANGE2
CMP AL, RANGE2[1]
JG NOT_IN_RANGE2
INC S7
JMP NEXT_LOOP
NOT_IN_RANGE2:
CMP AL, RANGE3[0]
JL NOT_IN_RANGE3
CMP AL, RANGE3[1]
JG NOT_IN_RANGE3
INC S8
JMP NEXT_LOOP
NOT_IN_RANGE3:
CMP AL, RANGE4[0]
JL NOT_IN_RANGE4
CMP AL, RANGE4[1]
JG NOT_IN_RANGE4
INC S9
JMP NEXT_LOOP
NOT_IN_RANGE4:
CMP AL, RANGE5[0]
JL NOT_IN_RANGE5
CMP AL, RANGE5[1]
JG NOT_IN_RANGE5
INC S10
NOT_IN_RANGE5:
NEXT_LOOP:
INC SI
LOOP LOOP_START
MOV AH, 4CH
INT 21H
MAIN ENDP
END MAIN
```
程序使用了一个循环遍历学生成绩,然后使用一系列的比较来确定每个学生的成绩范围,并在相应的计数器中增加该范围的人数。最后,程序通过INT 21H调用结束。程序执行后,S6,S7,S8,S9和S10分别存储60-69分,70-79分,80-89分,90-99分和100分的人数。
阅读全文