Скопировать одну строку в другую с заменой последней буквы первой строки на произвольный символ - Assembler

Узнай цену своей работы

Формулировка задачи:

Если есть возможность, то решение кодом, а не алгоритмом.

Решение задачи: «Скопировать одну строку в другую с заменой последней буквы первой строки на произвольный символ»

textual
Листинг программы
str1 db 'qwerty'
len=$-str1
str2 db 20 dup(?)
....
lea si,str1
lea di,str2
mov cx,len
dec cx
rep movsb
mov al,'z'
stosb

Объяснение кода листинга программы

  1. str1 db 'qwerty' - в этой строке определяется строка qwerty, которую мы будем копировать

  2. len=$-str1 - здесь вычисляется длина строки qwerty (5 символов) и сохраняется в переменной len

  3. str2 db 20 dup(?) - в этой строке определяется строка из 20 символов, которую мы будем заполнять

  4. lea si,str1 - здесь мы указываем начальный адрес строки qwerty в памяти (si)

  5. lea di,str2 - здесь мы указываем начальный адрес строки, куда будем копировать (di)

  6. mov cx,len - в этом выражении мы копируем значение переменной len в регистр cx

  7. dec cx - здесь мы уменьшаем значение cx на 1, чтобы пропустить последний символ в строке qwerty, который мы не будем копировать

  8. rep movsb - это команда, которая будет повторяться до тех пор, пока не будут скопированы все символы строки qwerty. Она копирует символ из строки qwerty в строку str2, увеличивая при этом значение di на 1

  9. mov al,'z' - здесь мы помещаем символ 'z' в регистр al

  10. stosb - эта команда копирует символ из регистра al в строку str2, увеличивая при этом значение di на 1. Это необходимо, чтобы заменить последний символ в строке qwerty на символ 'z'

  11. ... - в данном коде нет других действий, которые нужно описать

Оцени полезность:

13   голосов , оценка 3.692 из 5
Похожие ответы