Написать три макроса:

  1. strlen регистр адрес — вычисляет длину asciz-строки по адресу и заносит результат в регистр

  2. strcpy приёмник источник — копирует asciz-строку, находящуюся по адресу источник, в адрес приёмник

    • Копирование должно происходить «справа налево», чтобы строку с адресом A можно было скопировать, например, на адрес A+1 (если метка A — это адрес, а B — это адрес + 1, то strcpy B A должно приводить к удвоению первого символа A)

  3. strcat приёмник источник — добавляет asciz-строку, находящуюся по адресу источник, в конец строки приёмник

    • Копирование должно происходить «справа налево», чтобы строку с адресом A можно было добавить к строке с адресом A (strcat STR STR должен приводить к удвоению строки STR)

Для (увы, слегка неэффективного) копирования «справа налево» надо знать длину строки, но всё равно все три операции небезопасны. Пример тестирующей программы.

<пуcтой ввод>

SourceDestination17


CategoryHomework

LecturesCMC/ArchitectureAssembler2024/Homework_StrMacro (последним исправлял пользователь FrBrGeorge 2024-03-14 10:24:54)