Написать три макроса:
strlen регистр адрес — вычисляет длину asciz-строки по адресу и заносит результат в регистр
strcpy приёмник источник — копирует asciz-строку, находящуюся по адресу источник, в адрес приёмник
Копирование должно происходить «справа налево», чтобы строку с адресом A можно было скопировать, например, на адрес A+1 (если метка A — это адрес, а B — это адрес + 1, то strcpy B A должно приводить к удвоению первого символа A)
strcat приёмник источник — добавляет asciz-строку, находящуюся по адресу источник, в конец строки приёмник
Копирование должно происходить «справа налево», чтобы строку с адресом A можно было добавить к строке с адресом A (strcat STR STR должен приводить к удвоению строки STR)
Для (увы, слегка неэффективного) копирования «справа налево» надо знать длину строки, но всё равно все три операции небезопасны. Пример тестирующей программы.
<пуcтой ввод>
SourceDestination17