-
Notifications
You must be signed in to change notification settings - Fork 1
/
3_WORDS_VOWELS_CONSONANT.asm
127 lines (97 loc) · 1.92 KB
/
3_WORDS_VOWELS_CONSONANT.asm
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
; Number of words
; Number of vowels
; Number of consonants
; Number of digits
.MODEL SMALL
.STACK 100H
.DATA
STR DB 40 DUP('$')
WORDS DB '1'
VOWELS DB '0'
CONSONANTS DB '0'
DIGITS DB '0'
NEWLINE DB 0AH,0DH,'$'
.CODE
MAIN PROC
MOV AX,@DATA
MOV DS,AX
MOV AH,1
XOR SI,SI
READ:
INT 21H
CMP AL,0DH
JE END_READ
MOV STR+SI,AL
INC SI
JMP READ
END_READ:
CALL PRINTLINE
MOV CX,SI
MOV DI,0
MOV AH,2
; count words
ITERATE:
MOV AH, STR[DI]
CMP AH,' '
JE WORD_CNT
CMP AH,'A'
JE VOWEL_CNT
CMP AH,'E'
JE VOWEL_CNT
CMP AH, 'I'
JE VOWEL_CNT
CMP AH,'O'
JE VOWEL_CNT
CMP AH,'U'
JZ VOWEL_CNT
CMP AH,'0'
JL NEXT
CMP AH,'9'
JG NEXT
JMP DIGIT_CNT
NEXT:
CMP AH,'A'
JL BOTTOM
CMP AH,'Z'
JG BOTTOM
INC CONSONANTS
JMP BOTTOM
DIGIT_CNT:
INC DIGITS
JMP BOTTOM
VOWEL_CNT:
INC VOWELS
JMP BOTTOM
WORD_CNT:
INC WORDS
JMP BOTTOM
BOTTOM:
INC DI
LOOP ITERATE
MOV DL,VOWELS
MOV AH,2
INT 21H
CALL PRINTLINE
MOV DL,CONSONANTS
INT 21H
CALL PRINTLINE
MOV DL,DIGITS
INT 21H
CALL PRINTLINE
MOV DL,WORDS
INT 21H
CALL PRINTLINE
MOV AH,4CH
INT 21H
MAIN ENDP
PRINTLINE PROC
PUSH DX
PUSH AX
LEA DX,NEWLINE
MOV AH,9
INT 21H
POP AX
POP DX
RET
PRINTLINE ENDP
END MAIN