.stack 100h
.data
Prompt db 'Введите строку: '
CRLF db 13,10,36
Result db 'Слово: $'
Buff db 80
Len db ?
String db 80 dup (?)
.code
N76158579:
mov ax,@data
mov ds,ax
mov es,ax
mov ah,9
lea dx,Prompt
int 21h
inc ah
lea dx,Buff
int 21h
dec ah
lea dx,CRLF
int 21h
mov cl,Len
xor ch,ch
lea di,String
mov ax,20h; код пробела
Begin:
repe scasb
je Print
mov si,di
dec si
cmp ah,[si]
jae NextWord
mov ah,[si]
mov bx,si
NextWord:
repne scasb
je Begin
Print:
mov si,bx
mov ah,9
lea dx,Result
int 21h
Cycle:
lodsb
cmp al,20h
jbe Quit
int 29h
jmp Cycle
Quit:
xor ah,ah
int 16h
mov ah,4Ch
int 21h
end N76158579
P.S. Слова в строке должны быть разделены пробелом (или пробелами) . Также пробелы могут быть в начале и конце строки.
Если в строке несколько слов с одинаково максимальными кодами первых символов, то выводится первое встреченное.
Программа делает неполный анализ строки, поэтому на пустую строку или строку, состоящую из одних пробелов, реагирует неадекватно.
