Как исправить код ассемблера?

copy: 
    lodsb ;Загружаем новый символ
    cmp al, 30h ;Проверяем ноль ли это
    je output ;Если ноль - переходим к выводу строки
    stos from ;Иначе - переносим символ в новую строку
    jmp copy ;Повторяем итерацию

;Блок вывода строк
output:
    mov al, 30h ;Заносим символ ноль в регистр al
    stosb ;Заносим символ в конец строки
    mov al, '$' ;Заносим символ конца строки в регистр al
    stosb ;Добавляем после нуля символ конца строки чтобы не выводить линшний мусор
    mov ah,09h ;Переходим к выводу строки
    lea dx, msg ;Заносим адрес начала вывода
    int 21h ;Выводим строки msg и result

в этом куске кода нужно исправить две вещи:

  • Z-строка кончается нулевым символом (кодом 0, а не 30h)

  • вы не имеете право дописывать что-то к строке, чтобы вывести ее на экран, при выводе строка доступна вам как есть (начало по известному адресу, в конце - ноль) и только для чтения


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

Автор решения: Qwertiy
cmp al, 30h ;Проверяем ноль ли это
je output ;Если ноль - переходим к выводу строки

Как минимум в этом месте сравнение не с тем числом.

→ Ссылка