Не выводит результат (ассемблер)

Задание состоит в том чтобы написать EXE программу которая состоит в том чтобы вывести строку потом еще раз вывести только заменив все буквы с строчных на прописные, но столкнулся с проблемой первый раз строку выводит а второй раз нет.

.data
 Sos db "Input string $"
 .code
 main proc
 mov ax,@data
 mov ds,ax
 mov dx,offset Sos
 mov ah,09h
 int 21h    
 mov cx,[bx + 1] 
 lst:
 mov di,cx
 cmp Sos[di+0],60h 
 jl next 
 sub Sos[di+0],20h 
 next:
 loop lst 
 mov dx, offset Sos 
 mov ah,09h
 int 21h 
 mov ax,4c00h
 int 21h

 main endp
 end main
 code ends

Ответы (1 шт):

Автор решения: Mihail Kosovan

Вот так?

.model tiny
.data
 Sos db "Input string $"  
 len dw $-Sos
 .code
 main proc
    
 mov ax,@data
 mov ds,ax
 mov dx,offset Sos
 mov ah,09h
 int 21h    
 mov cx,len
 lst:
 mov di,cx
 cmp Sos[di+0],60h 
 jl next 
 sub Sos[di+0],20h 
 next:
 loop lst 
 mov ax,@data
 mov ds,ax
 mov dx, offset Sos 
 mov ah,09h
 int 21h 
 mov ax,4c00h
 int 21h

 main endp
 end main
 code ends
→ Ссылка