-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path4.Statistics.arm
136 lines (113 loc) · 2.68 KB
/
4.Statistics.arm
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
DATA SEGMENT
NUM DB 100 ;准备接收100个字符.
NNN DB ? ;用于存放实际输入的个数.
BUFFER DB 100 DUP(?) ;100字节的空间.
N_N DB ?
S_N DB ?
C_N DB ?
O_N DB ?
MESSAGE DB 13, 10, 'Input STR : $ ' ;用于提示.
MES_C DB 13, 10, 'Char N is : $ ' ;用于提示.
MES_S DB 13, 10, 'Space N is : $ ' ;用于提示.
MES_N DB 13, 10, 'Num N is : $ ' ;用于提示.
MES_O DB 13, 10, 'Other N is : $ ' ;用于提示.
MES_A DB 13, 10, 'All N is : $ ' ;用于提示.
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX
MOV N_N, 0
MOV S_N, 0
MOV C_N, 0
MOV O_N, 0
MOV DX, OFFSET MESSAGE
MOV AH, 9 ;提示输入
INT 21H
MOV DX, OFFSET NUM
MOV AH, 10
INT 21H
MOV CL, NNN ;收到字符的个数.
CMP CL, 0
JNZ ZIFU
JMP EXIT
ZIFU:
LEA SI, BUFFER ;收到字符的起始地址.
AGAIN:
MOV AL, [SI]
CMP AL, ' ' ;- ' '
JNZ N_num ;
INC S_N
JMP NEXT
N_num:
CMP AL, ':' ;- ':'
JNC N_C_B ;> '9'
CMP AL, '0'
JC N_C_B ;< '0'
INC N_N ;数字个数加一.
JMP NEXT
N_C_B:
CMP AL, '[' ;- '['
JNC N_C ;> 'Z'
CMP AL, 'A'
JC N_C ;< 'A'
INC C_N ;大写,加一.
JMP NEXT
N_C:
CMP AL, '{' ;- '{'
JNC OTHER ;> 'z'
CMP AL, 'a'
JC OTHER ;< 'a'
INC C_N ;小写,加一.
JMP NEXT
OTHER:
INC O_N ;其它.
NEXT:
INC SI
LOOP AGAIN
MOV DX, OFFSET MES_N
MOV AH, 9
INT 21H
MOV AL, N_N
MOV DL,AL
ADD DL,30H
MOV AH, 2
INT 21H
MOV DX, OFFSET MES_S
MOV AH, 9
INT 21H
MOV AL, S_N
MOV DL,AL
ADD DL,30H
MOV AH, 2
INT 21H
MOV DX, OFFSET MES_C
MOV AH, 9
INT 21H
MOV AL, C_N
MOV DL,AL
ADD DL,30H
MOV AH, 2
INT 21H
MOV DX, OFFSET MES_O
MOV AH, 9
INT 21H
MOV AL, O_N
MOV DL,AL
ADD DL,30H
MOV AH, 2
INT 21H
MOV DX, OFFSET MES_A
MOV AH, 9
INT 21H
MOV AL, NNN
MOV DL,AL
ADD DL,30H
MOV AH, 2
INT 21H
EXIT:
MOV AH, 4CH
INT 21H
CODE ENDS
END START