| 12
 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 SEGMENTTXT1 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
 
 |