Как исправить код ассемблера?
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 ;Если ноль - переходим к выводу строки
Как минимум в этом месте сравнение не с тем числом.