Программа, которая вычисляем длину строки. Организуем цикл в котором будем проверять каждый символ на символ завершения строки 24h ($), каждый раз увеличивая значение переменной number на 1. Выходим из цикла как только встретим символ завершения строки.
- title Автор: Довгополов Евгений Сергеевич
- .model small
- .stack 100h
- data segment public
- ____string db "When I was a little boy, "
- ___________db "I had a dream where I was "
- ___________db "looking for my father "
- ___________db "among huge pink flowers.$"
- ____output db "Length of the string: $"
- ____number dw 0
- data ends
- code segment public
- ____assume ds:data, cs:code
- ____main proc
- ________mov ____ax, seg data
- ________mov ____ds, ax
- ________lea ____bx, ds:[string]
- ____MainLoop:
- ________cmp ____byte ptr[bx+si], 24h
- ________je _____Done
- ________inc ____number
- ________inc ____si
- ________jmp ____MainLoop
- ____Done:
- ________mov ____ah, 09h
- ________lea ____dx, ds:[output]
- ________int ____21h
- ________mov ____dx, number
- ________call ___PrintNumber
- ________mov ____ax, 4C00h
- ________int ____21h
- ____main endp
- ____PrintNumber proc
- ________mov ____ax, dx
- ________mov ____bx, 10
- ________cwd
- ________div ____bx
- ________mov ____cl, 8
- ________shl ____ax, cl
- ________xchg ___al, dl
- ________or _____ax, 3030h
- ________xchg ___ax, bx
- ________mov ____ah, 02h
- ________cmp ____bh, 30h
- ________je _____PrintOneDigit
- ________mov ____dl, bh
- ________int ____21h
- ____PrintOneDigit:
- ________mov ____dl, bl
- ________int ____21h
- ________ret
- ____PrintNumber endp
- code ends
- end main