Page 200 - 149
P. 200
В полі мітки знаходиться ім’я (символьне позначення або мнемоніка),
введена програмістом. А поле операнда-список формальних параметрів,
називають також аргументами. Параметри розділюються комами і в
загальному випадку можуть бути виразами. Група операторів між
директивами MACRO i ENDM, називається тілом макрокоманди, може
містити будь-які машинні команди, директиви (крім MACRO i ENDM),
коментарі і звернення до інших макрокоманд, коли допускаються вкладені
макрокоманди. Параметри визначаються при кожному зверненні до
макрокоманди.
Звернення до макрокоманд. Звернення до означеної раніше в
програмі макрокоманди має такий вигляд:
Мітка Код Операнд Коментар
[мітка: ] <ім’я> <список параметрів>
В полі мнемоніки міститься ім’я макрокоманди, яке фігурує в полі
мітки директиви MACRO, а в полі операнд-список фактичних параметрів.
Значення параметрів підставляються в тіло макрокоманди зліва направо у
відповідності з полем операнда директиви MACRO. Якщо у зверненні є
менше параметрів, ніж у визначенні макрокоманди, то решта параметрів
вважаються пустими, а якщо більше-
лишні ігноруються.
Розширення макрокоманд. Оператори, що утворюються в результаті
підстановки фактичних параметрів в тіло макрокоманд, називають
розширенням макрокоманди. Розширення має містити тільки допустимі
оператори мови асемблера. Означимо, наприклад, макрокоманду STACK
таким чином:
Мітка Код Операнд Коментар
STACK MACRO R1
PUSH R1 ; Завантажити в стек
ENDM ; вміст регістра R1
Допустимими значеннями R1 є B,D,H,PSW, тому звернення STACK SP
є помилковим.
Для запобігання конфліктам, що пов’язані з багаторазовим
визначенням міток, програма-асемблер рахує мітки в макрокомандах
локальними, тобто чинними в межах конкретного розширення. При
необхідності створення глобальної мітки, необхідно закінчити мітку двома
двокрапками замість однієї. Глобальна мітка може зустрічатись тільки один
раз.
На завершення розглянемо макрокоманду IXAD індексної адресації.
Вона завантажує в регістри (H,L) базову адресу BASE і добавляє до неї
значення 16-бітового індекса, який зберігається в регістровій парі RP:
Мітка Код Операнд Коментар
IXAD MACRO RP,BASE
201