-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFindMaxWord.asm
More file actions
136 lines (95 loc) · 2.23 KB
/
FindMaxWord.asm
File metadata and controls
136 lines (95 loc) · 2.23 KB
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
TITLE FIND_MAX_WORD
C0DE SEGMENT
ASSUME CS:C0DE, DS:DATA
BEGIN:
MOV AX,DATA
MOV DS,AX
LEA DX,MESSAGE
MOV AH,9
INT 21H
MOV SI,0
INPUT:
MOV AH,08
INT 21H
CMP AL,'&'
JE PRINT
CMP AL,' '
JE STORE
CMP AL,'a'
JB INPUT
CMP AL,'z'
JBE STORE
CMP AL,'A'
JB INPUT
CMP AL,'Z'
JA INPUT
STORE:
MOV BUFFER[SI],AL
INC SI
MOV DL,AL
MOV AH,02
INT 21H
CMP SI,30
JB INPUT
PRINT:
LEA DX,NEWLINE
MOV AH,09
INT 21H
MOV CX,SI
MOV DI,SI
MOV SI,0
MOV BL,0 ;COUNTER WORD
MOV BH,0 ;MAX COUNTER WORD
MOV BP,0 ;MAX POSITION HOLDER
MOV SP,0 ;STARTER WORD
JCXZ NOINPUT
LEA DX,MESSAGE_OUTPUT
MOV AH,9
INT 21H
FOR:
CMP BUFFER[SI],' '
JE NEW_WORD
INC BL
JMP NEXT
NEW_WORD:
CMP BL,BH
JA NEW_MAX_WORD
MOV SP,SI
INC SP ;TO TAKE THE START OF THE CHAR NOT THE SPACE
MOV BL,0
JMP NEXT
NEW_MAX_WORD:
MOV BP,SP
MOV BH,BL
MOV BL,0
NEXT:
INC SI
LOOP FOR
MOV CX,DI
MOV SI,BP ;START FROM HERE
FOR2:
CMP BUFFER[SI],' '
JE TELOS
MOV DL,BUFFER[SI]
MOV AH,02
INT 21H
NEXT2:
INC SI
LOOP FOR2
JMP FINISH
NOINPUT:
LEA DX,NOINPUTMIN
MOV AH,09
INT 21H
FINISH:
MOV AH,4CH
INT 21H
C0DE ENDS
DATA SEGMENT
MESSAGE DB "Please give a text (end the input with '&'): $"
MESSAGE_OUTPUT DB 10,13,"The longest word in the text is the following: $"
NEWLINE DB 10,13,"$"
NOINPUTMIN DB "NO INPUT!!!$"
BUFFER DB 30 DUP(0)
DATA ENDS
END BEGIN