主题:[讨论]有关记录学生各成绩段的人数
有九个学生的成绩记录在数据存储区里,试分别统计低于60,60-69,70-79,80-89,90-99,100分的人数,显示出来,并求平均成绩
这是我做的记录各成绩段人数的源代码:
DATA SEGMENT
MSG DB 58,65,78,98,85,67,100,86,83
M1 DB 0 ;低于60个数
M2 DB 0 ;60-69个数
M3 DB 0 ;70-79个数
M4 DB 0 ;80-89个数
M5 DB 0 ;90-99个数
M6 DB 0 ;100个数
S1 DB 0DH,0AH,' UNDER 60 ','$'
S2 DB 0DH,0AH,' 60-69 ','$'
S3 DB 0DH,0AH,' 70-79 ','$'
S4 DB 0DH,0AH,' 80-89 ','$'
S5 DB 0DH,0AH,' 90-99 ','$'
S6 DB 0DH,0AH,' 100 ','$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV CX,9
LEA BX,MSG
NEXT: MOV AL,[BX]
CMP AL,59
JBE MSG1
CMP AL,69
JBE MSG2
CMP AL,79
JBE MSG3
CMP AL,89
JBE MSG4
CMP AL,99
JBE MSG5
CMP AL,100
JBE MSG6
MSG1: INC M1 ;低于60分的人数加1
JMP OK
MSG2: INC M2 ;60-69分的人数加1
JMP OK
MSG3: INC M3 ;70-79分的人数加1
JMP OK
MSG4: INC M4 ;80-89分的人数加1
JMP OK
MSG5: INC M5 ;90-999分的人数加1
JMP OK
MSG6: INC M6 ;100分的人数加1
JMP OK
OK: INC BX ;移动指针
LOOP NEXT ;继续循环
LEA DX,S1 ;输出字符串S1
MOV AH,9
INT 21H
MOV DL,M1 ;输出M1值
ADD DL,30H
MOV AH,2
INT 21H
LEA DX,S2 ;输出字符串S2
MOV AH,9
INT 21H
MOV DL,M2 ;输出M2值
ADD DL,30H
MOV AH,2
INT 21H
LEA DX,S3 ;输出字符串S3
MOV AH,9
INT 21H
MOV DL,M3 ;输出M3值
ADD DL,30H
MOV AH,2
INT 21H
LEA DX,S4 ;输出字符串S4
MOV AH,9
INT 21H
MOV DL,M4 ;输出M4值
ADD DL,30H
MOV AH,2
INT 21H
LEA DX,S5 ;输出字符串S5
MOV AH,9
INT 21H
MOV DL,M5 ;输出M5值
ADD DL,30H
MOV AH,2
INT 21H
LEA DX,S6 ;输出字符串S6
MOV AH,9
INT 21H
MOV DL,M6 ;输出M6值
ADD DL,30H
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
还有平均成绩没有求出来,哪位高手可以提供求平均成绩的代码?
这是我做的记录各成绩段人数的源代码:
DATA SEGMENT
MSG DB 58,65,78,98,85,67,100,86,83
M1 DB 0 ;低于60个数
M2 DB 0 ;60-69个数
M3 DB 0 ;70-79个数
M4 DB 0 ;80-89个数
M5 DB 0 ;90-99个数
M6 DB 0 ;100个数
S1 DB 0DH,0AH,' UNDER 60 ','$'
S2 DB 0DH,0AH,' 60-69 ','$'
S3 DB 0DH,0AH,' 70-79 ','$'
S4 DB 0DH,0AH,' 80-89 ','$'
S5 DB 0DH,0AH,' 90-99 ','$'
S6 DB 0DH,0AH,' 100 ','$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV CX,9
LEA BX,MSG
NEXT: MOV AL,[BX]
CMP AL,59
JBE MSG1
CMP AL,69
JBE MSG2
CMP AL,79
JBE MSG3
CMP AL,89
JBE MSG4
CMP AL,99
JBE MSG5
CMP AL,100
JBE MSG6
MSG1: INC M1 ;低于60分的人数加1
JMP OK
MSG2: INC M2 ;60-69分的人数加1
JMP OK
MSG3: INC M3 ;70-79分的人数加1
JMP OK
MSG4: INC M4 ;80-89分的人数加1
JMP OK
MSG5: INC M5 ;90-999分的人数加1
JMP OK
MSG6: INC M6 ;100分的人数加1
JMP OK
OK: INC BX ;移动指针
LOOP NEXT ;继续循环
LEA DX,S1 ;输出字符串S1
MOV AH,9
INT 21H
MOV DL,M1 ;输出M1值
ADD DL,30H
MOV AH,2
INT 21H
LEA DX,S2 ;输出字符串S2
MOV AH,9
INT 21H
MOV DL,M2 ;输出M2值
ADD DL,30H
MOV AH,2
INT 21H
LEA DX,S3 ;输出字符串S3
MOV AH,9
INT 21H
MOV DL,M3 ;输出M3值
ADD DL,30H
MOV AH,2
INT 21H
LEA DX,S4 ;输出字符串S4
MOV AH,9
INT 21H
MOV DL,M4 ;输出M4值
ADD DL,30H
MOV AH,2
INT 21H
LEA DX,S5 ;输出字符串S5
MOV AH,9
INT 21H
MOV DL,M5 ;输出M5值
ADD DL,30H
MOV AH,2
INT 21H
LEA DX,S6 ;输出字符串S6
MOV AH,9
INT 21H
MOV DL,M6 ;输出M6值
ADD DL,30H
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
还有平均成绩没有求出来,哪位高手可以提供求平均成绩的代码?