Загрузка данных


.model small
.stack 100h

.data
Msg1 db 'Input string: $'
Msg2 db 13,10,'Length of last word: $'

Str1 db 255, ?, 255 dup(?)

.code

Start:
    mov ax,@data
    mov ds,ax
    mov es,ax

    ; приглашение
    mov ah,09h
    lea dx,Msg1
    int 21h

    ; ввод строки
    mov ah,0Ah
    lea dx,Str1
    int 21h

    ; вывод текста результата
    mov ah,09h
    lea dx,Msg2
    int 21h

    ; длина строки -> CX
    mov cl,[Str1+1]
    mov ch,0

    ; начало строки
    lea di,Str1+2

    ; BX будет хранить адрес символа после
    ; последнего найденного пробела
    lea bx,Str1+2

    cld

SearchSpace:

    cmp cx,0
    je CalcLen

    mov al,' '

    repne scasb

    jne CalcLen

    mov bx,di

    jmp SearchSpace

CalcLen:

    ; SI = конец строки
    xor ax,ax
    mov al,[Str1+1]

    lea si,Str1+2
    add si,ax

    ; длина последнего слова
    mov ax,si
    sub ax,bx

    mov dl,al

    ; вывод одной цифры
    add dl,'0'
    mov ah,02h
    int 21h

    mov ax,4C00h
    int 21h

end Start