修改下列程序,使符合要求:将DATA2开始的5个单元中的数据显示在屏幕上。
DATAS SEGMENT
DATA1 DW 55,70,82,90,60,70,95,84,75,63
DW 55,70,82,90,60,70,95,84,75,63 ;20名学生的成绩(0~100保存在连续的40个单元中)
COUNT EQU ($-DATA1)/2 ;学生总人数
DATA2 DB 5 DUP (0) ;各范围的人数(5个单元)
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
MAIN PROC FAR
START:
MOV AX,DATAS
MOV DS,AX
LEA SI,DATA1
MOV CX,COUNT
L1:
CALL GETDOMAIN ;找出成绩对应的范围,保存在BX中
;将对应人数增加1
MOV AL,DATA2[BX]
INC AL
MOV DATA2[BX],AL
LOOP L1
MOV AH,4CH
INT 21H
MAIN ENDP
;传入参数:DS,SI用来确定一名学生的成绩
;返回值:BX,该成绩所在的范围对应的DATA2的位置
;功能:通过比较,确定成绩所在范围
GETDOMAIN PROC NEAR
LODSW ;(AX)=(DS:SI),(SI)=(SI)+1
MOV BX,0
CMP AX,60
JB L2 ;0~59,(BX)=0
INC BX
CMP AX,70
JB L2 ;60~69,(BX)=1
INC BX
CMP AX,80
JB L2 ;70~79,(BX)=2
INC BX
CMP AX,90
JB L2 ;80~89,(BX)=3
INC BX ;90~100,(BX)=4
L2:
RET
GETDOMAIN ENDP
CODES ENDS
END START