本实验涉及对10名学生的成绩进行区间统计。成绩分别是76,69,84,90,73,88,99,63,100和80分。编写一个子程序,用于统计不同成绩段的学生人数,包括低于60分、60~69分、70~79分、80~89分、90~99分以及满分100分的学生数量,并展示这些统计结果。
1.使用分支结构来划分不同的成绩等级,采用循环结构来遍历所有学生成绩,并通过DOS功能调用来显示统计结果。
2.将统计学生成绩和展示统计结果的任务分别封装在两个子程序中。
DATA SEGMENT
SCORE DW 76,69,84,90,73,88,99,63,100,80
S1 DB '<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 :','$'
C1 DB 0
C2 DB 0
C3 DB 0
C4 DB 0
C5 DB 0
C6 DB 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV CX,10
MOV SI,0
CLD
CALL SORT
CALL DISPLAY
MOV AX,4C00H
INT 21H
SORT PROC
A1:
MOV DI,SCORE[SI]
CMP DI,60
JAE A2;>=60
INC C1
JMP NEXT
A2:
CMP DI,70
JAE A3;>=70
INC C2
JMP NEXT
A3:
CMP DI,80
JAE A4;>=80
INC C3
JMP NEXT
A4:
CMP DI,90
JAE A5;>=90
INC C4
JMP NEXT
A5:
CMP DI,100
JAE A6;=100
INC C5
JMP NEXT
A6:
INC C6;100
NEXT:
ADD SI,2
LOOP A1
ret
SORT ENDP
OUTPUT PROC
ADD DL,30H
MOV AH,02H
INT 21H
RET
OUTPUT ENDP
DISPLAY PROC
;<60
MOV DX,OFFSET S1
MOV AH,09H
INT 21H
MOV DL,C1
CALL OUTPUT
;60~69
MOV DX,OFFSET S2
MOV AH,09H
INT 21H
MOV DL,C2
CALL OUTPUT
;70~79
MOV DX,OFFSET S3
MOV AH,09H
INT 21H
MOV DL,C3
CALL OUTPUT
;80~89
MOV DX,OFFSET S4
MOV AH,09H
INT 21H
MOV DL,C4
CALL OUTPUT
;90~99
MOV DX,OFFSET S5
MOV AH,09H
INT 21H
MOV DL,C5
CALL OUTPUT
;100
MOV DX,OFFSET S6
MOV AH,09H
INT 21H
MOV DL,C6
CALL OUTPUT
RET
DISPLAY ENDP
CODE ENDS
END START