Page 199 - 149
P. 199
Мітка Код Операнд Коментар
LDA ITEM ; Завантаження в акумулятор
MVI D,3 ; Задання числа зсувів
SHV ; Зсув на 3 біти
STA ITEM ; Запам’ятовування в пам’яті
При виконанні даного фрагмента модифікується значення індикатора С
(в команді RRC), а вміст регістра D є лічильником зсувів.
Можна розширити можливості макрокоманди SHV, якщо при
означенні її не вказувати ні конкретний регістр-лічильник, ні число зсувів, а
задати їх при безпосередньому зверненні до макрокоманди. Тобто мати
макрокоманду з формальними параметрами. Макрокоманда SHV з двома
параметрами (регістр REG, число зсувів VOL) визначається у такий спосіб:
Мітка Код Операнд Коментар
SHV MACRO REG, VOL ; Приклад означення
MVI REG, VOL ; макрокоманди
LOOP: RRC
ANI 7FH ; SHV з двома
DCR REG ; параметрами
JNZ LOOP
ENDM
Тепер при зверненні до SHV в різних місцях прикладної програми
можна використовувати як лічильник будь-який вільний регістр і задавати
змінне число зсувів. Наприклад, для зсуву вмісту комірки ITEM по 5 бітів з
регістром-лічильником L, необхідно записати:
Мітка Код Операнд Коментар
LDA ITEM ; Зсув вмісту
SHV L, 5 ; комірки з адресою ITEM
STA ITEM ; на п’ять розрядів вправо
Ознайомившись із загальними принципами використання
макрокоманд, зробимо строге визначення кожного етапу, зв’язаного з
означенням, зверненням і розширенням макрокоманд.
Означення макрокоманд. Означення макрокоманди має такий
формат:
Мітка Код Операнд Коментар
<ім’я> MACRO <список параметрів>
***
макрокоманди
Тіло
***
ENDM
200