ADD SI,2 INC DI XOR BX,BX JMP INPUT
OVER: MOV SCORE[SI],BX ;保存最后一个数据,并存放到
SCORE中
INC DI MOV DL,0AH MOV AH,02H INT 21H MOV CX,DI DEC CX
PUSH DI ;弹出输入个数*********** PUSH DI PUSH DI XOR BX,BX
COMP1: MOV SI,2 ;指向下一个数 MOV DX,CX
COMP2: MOV AX,SCORE[BX]
CMP AX,SCORE[BX+SI] ;比较前后两个数 JNC COMP3 ;小于就跳到COMP3 XCHG AX,SCORE[BX+SI] ;交换位置 MOV SCORE[BX],AX
COMP3: ADD SI,2 ;指向下一个数 DEC DX JNZ COMP2
ADD BX,2 ;指向下一个数 LOOP COMP1
SUB SI,SI ;把SI清零 OUT_PUT:
LEA DX,STRMA ;输出有效最大值 MOV AH,9 INT 21H
MOV BX,SCORE
;输出百位数 MOV DL,BH AND DL,0FH ADD DL,30H MOV AH,02H INT 21H
MOV DL,BL ;输出十位数 MOV CL,4 SHR DL,CL ADD DL,30H MOV AH,02H INT 21H
MOV DL,BL ;输出个位数 AND DL,0FH ADD DL,30H MOV AH,02H INT 21H
CALL DISPCR
LEA DX,STRMI ;输出最小有效值 MOV AH,9
INT 21H POP DI DEC DI
SUB DI,S10 SHL DI,1
MOV BX,SCORE[DI] ;输出百位数 MOV DL,BH AND DL,0FH ADD DL,30H MOV AH,02H INT 21H
MOV DL,BL ;输出十位数 MOV CL,4 SHR DL,CL ADD DL,30H MOV AH,02H INT 21H
MOV DL,BL ;输出个位数 AND DL,0FH ADD DL,30H MOV AH,02H INT 21H
;************输出平均成绩******************** CALL DISPCR LEA DX,STRAV MOV AH,9 INT 21H POP DI LEA AX,SCORE
PUSH AX
CALL COMPUTMEAN POP AX
CALL DISPAX ;显示Ax内容
;************************************************* POP DI MOV CX,DI
SUB CX,S10 ;设置计数器为DI LEA BX,SCORE
COMPARE: MOV AX,[BX]
CMP AX,60H ;与60比较 JL FIVE ;小于就跳到FIVE CMP AX,70H ;与70比较 JL SIX ;小于就跳到SIX CMP AX,80H ;与80比较 JL SEVEN ;小于就跳到SEVEN CMP AX,90H ;与90比较 JL EIGHT ;小于就跳到EIGHT CMP AX,100H ;与100比较 JLE NINE ;不为0就是90到100
JMP NEWDATA ;跳到NEWDATA
FIVE: INC S5 ;小于60时【S5+1】 JMP NEWDATA ;跳到NEWDATA
SIX: INC S6 ;大于等于60小于70时【S6+1】
JMP NEWDATA ;跳到NEWDATA
SEVEN: INC S7 ;大于等于70小于80时【S7+1】 JMP NEWDATA ;跳到NEWDATA
EIGHT: INC S8 ;大于等于80小于90时【S8+1】 JMP NEWDATA ;跳到NEWDATA
NINE: INC S9 ;大于等于90小于等于100时【S9+1】
NEWDATA: ADD BX,2 LOOP COMPARE
CALL DISPCR LEA DX,STR1 MOV AH,09H INT 21H MOV AX,S5 CALL DISPAXD
CALL DISPCR LEA DX,STR2 MOV AH,09H INT 21H MOV AX,S6 CALL DISPAXD
CALL DISPCR LEA DX,STR3 MOV AH,09H INT 21H MOV AX,S7 CALL DISPAXD
CALL DISPCR LEA DX,STR4 MOV AH,09H
;取下个数 ;循环COMPARE