1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
| DATAS SEGMENT TXT1 DB 'Please input score(only 60 to 100): ','$' SCORE6 DB 13,10,'The number of score are 60 to 69: ','$' SCORE7 DB 13,10,'The number of score are 70 to 79: ','$' SCORE8 DB 13,10,'The number of score are 80 to 89: ','$' SCORE9 DB 13,10,'The number of score are 90 to 99: ','$' SCORE10 DB 13,10,'The number of score is 100: ','$' OUTSCORE DB 13,10,'The number of outscore: ','$' SCORE_6 DB 30H SCORE_7 DB 30H SCORE_8 DB 30H SCORE_9 DB 30H SCORE_10 DB 30H SCORE_OUT DB 30H;用于存储相应分数段的数量,全部初始化数量为0 SPACE DB 32,32,'$';双空格 DATAS ENDS
STACKS SEGMENT DB 128 DUP(?) STACKS ENDS
CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS
CMP_ PROC NEAR;定义CMP_子程序 CMP AL,31H;和'1'比较 JZ CMP10;相等则跳转到CMP10标号
CMP AL,36H;和'6'比较 JZ CMP6;相等则跳转到CMP10标号
CMP AL,37H;和'7'比较 JZ CMP7;相等则跳转到CMP10标号
CMP AL,38H;和'8'比较 JZ CMP8;相等则跳转到CMP10标号
CMP AL,39H;和'9'比较 JZ CMP9;相等则跳转到CMP10标号
JMP CMPOUT;如果都不等于,则首数字为其他,跳转到CMPOUT标号 CMP10: ADD [SCORE_10],1;如果首数字为1,则[SCORE_10]加1 JMP EXIT
CMP6: ADD [SCORE_6],1;如果首数字为1,则[SCORE_6]加1 JMP EXIT
CMP7: ADD [SCORE_7],1;如果首数字为1,则[SCORE_7]加1 JMP EXIT
CMP8: ADD [SCORE_8],1;如果首数字为1,则[SCORE_8]加1 JMP EXIT
CMP9: ADD [SCORE_9],1;如果首数字为1,则[SCORE_9]加1 JMP EXIT
CMPOUT: ADD [SCORE_OUT],1;;如果首数字为其他,则[SCORE_OUT]加1 JMP EXIT
EXIT: LEA DX,SPACE MOV AH,9 INT 21H;输出显示两个空格 RET;返回主程序
CMP_ ENDP
START: MOV AX,DATAS MOV DS,AX LEA DX,TXT1 MOV AH,9 INT 21H MOV CX,10;设置输入次数
INPUT: MOV AH,1 INT 21H;输入分数最高位 CALL CMP_ LOOP INPUT;循环继续输入分数的最高位数,直到输完10个数为止
OUTPUT: LEA DX,SCORE6 MOV AH,9 INT 21H;输出显示提示信息 MOV AL,[SCORE_6] MOV DL,AL MOV AH,2 INT 21H;输出首数字为6的个数
LEA DX,SCORE7 MOV AH,9 INT 21H;输出显示提示信息 MOV AL,[SCORE_7] MOV DL,AL MOV AH,2 INT 21H;输出首数字为7的个数
LEA DX,SCORE8 MOV AH,9 INT 21H;输出显示提示信息 MOV AL,[SCORE_8] MOV DL,AL MOV AH,2 INT 21H;输出首数字为8的个数
LEA DX,SCORE9 MOV AH,9 INT 21H;输出显示提示信息 MOV AL,[SCORE_9] MOV DL,AL MOV AH,2 INT 21H;输出首数字为9的个数
LEA DX,SCORE10 MOV AH,9 INT 21H;输出显示提示信息 MOV AL,[SCORE_10] MOV DL,AL MOV AH,2 INT 21H;输出首数字为1的个数
LEA DX,OUTSCORE MOV AH,9 INT 21H;输出显示提示信息 MOV AL,[SCORE_OUT] MOV DL,AL MOV AH,2 INT 21H;输出首数字为其他的个数
MOV AH,4CH INT 21H;程序结束 CODES ENDS END START
|