Написать комплект макросов для работы со строками. Параметры макросов — адреса (метки) ASCIZ-строк в памяти. Результаты работы сохраняются в регистрах a0 и a1.
Макрокоманда |
Параметр 1 |
Параметр 2 |
Описание |
→a0 |
→a1 |
strlen |
Адрес |
|
Определение длины строки |
Длина строки |
|
strcpy |
Приёмник |
Источник |
Копирует строку с адреса «источник» по адресу «приёмник» |
Приёмник |
Длина строки-приёмника |
strcat |
Приёмник |
Источник |
Копирует строку с адреса «источник» в конец строки по адресу «приёмник» |
Приёмник |
Длина строки-приёмника |
Копирование должно происходить «справа налево», чтобы строку с адресом A можно было скопировать на адрес A+k. Например, если метка A — это адрес, а B — это адрес + 1, то strcpy B A должно приводить к удвоению первого символа A.
Аналогично, strcat STR STR должен приводить к удвоению строки STR)
Разрешается модифицировать регистры типа t*
Все три подпрограммы — «небезопасные»: strcpy A B из предыдущих примеров может привести к бесконечному циклу или к заполнению строки последним символом, а отсутствие нулевого байта — к выходу за пределы памяти.
Пример тестирующей программы:
<пуcтой ввод>
SourceDestination17