题目:定义一数组GRADE存放有50个学生某门功课的考试成绩,要求编一程序,完成如下任务:统计各分数段的人数,即要求统计90~100分,80~89分,70~79分,60~69分以及60分以下的各有多少人。
代码:
DATA SEGMENT
GRADE DB 59,54,55,57,55,54,53,57,58,56,61,61,65,67,68,68,69,60,63,68,70,71,73,74,75,77,79,71,72,74,80,81,87,86,88,89,86,83,85,84,94,97,94,100,100,97,96,95,93,99
NUM EQU $-GTADE ;获取TABLE中元素个数
COUNT1 DB 0
COUNT2 DB 0
COUNT3 DB 0
COUNT4 DB 0
COUNT5 DB 0 ;COUNT1到COUNT5依次存放60分以下、60-69分、70-79分、80-89分、90-100分的人数
DATA ENDS
CODE SEGMENT
ASSUME:CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX ;设置DS
LEA SI,GRADE-1 ;将GRADE首地址减一后送到SI
XOR CX,CX
MOV CX,NUM ;设置循环次数
NEXT:
INC SI
MOV AL,[SI] ;将TABLE中第一个元素送到AL寄存器
CMP AL,60 ;将AL内容和60比较,
JL NEXT1 ;若AL内容小于60,则跳转到NEXT1
CMP AL,70
JL NEXT2 ;若AL内容小于70,则跳转到NEXT2
CMP AL,80
JL NEXT3 ;若AL内容小于80,则跳转到NEXT3
CMP AL,90
JL NEXT4 ;若AL内容小于90,则跳转到NEXT4
CMP AL,100
JLE NEXT5 ;若AL内容小于等于100,则跳转到NEXT5
NEXT1:
INC COUNT1
LOOP NEXT ;循环
NEXT2:
INC COUNT2
LOOP NEXT
NEXT3:
INC COUNT3
LOOP NEXT
NEXT4:
INC COUNT4
LOOP NEXT
NEXT5:
INC COUNT5
LOOP NEXT
MOV AH,4CH
INT 21H ;返回DOS
CODE ENDS
END START
运行结果: