Makroinstrukcja (makro) to zestaw instrukcji asemblera. Po zdefiniowaniu makroinstrukcja może być włączona w kod źródłowy programu poprzez jej wywołanie. W treści makr mogą występować bez ograniczeń wywołania innych makr, za wyjątkiem samego siebie.
Składnia:
Parametry to oddzielone przecinkami symbole (parametry formalne makra), które mogą być wykorzystywane w treści makra. Przy wywołaniu podawane są parametry aktualne makra, które zastępują wszystkie parametry formalne. Makro jest wywoływane poprzez umieszczenie jego nazwy w polu rozkazu danej linii programu. np:
[etykieta:] NAZWA par1,par2,...
Asembler (w tej wersji!) nie umożliwia tworzenia etykiet lokalnych w makrach. Jeśli występuje taka potrzeba to można podawać etykietę (lub jej fragment) jako jeden z parametrów makra. Jest to możliwe, gdyż zastępowanie parametrów formalnych parametrami aktualnymi odbywa się na drodze podmieniania tekstów przed asemblacją linii programu. Teksty te są podmieniane niezależnie od tego, czy występują w etykiecie, nazwie mnemonika, czy w treści operandu.
O aktualnie używanym banku rejestrów decydują bity RS0 i RS1 znajdujące się w rejestrze PSW (RS1=PSW.4, RS0=PSW.3). Bity te tworzą słowo oznaczające numer banku. Podstawowe makra są następujące:
Jeżeli używamy tylko banków 0 i 1 to można te makra uprościć:
Jeżeli pozostałe bity PSW są nieistotne można również użyć instrukcji ośmiobitowej, stosując makro z parametrem:
Wywołanie takiego makra może mieć np. taką postać:
Operacjami wykorzystującymi stos są PUSH, POP, xCALL, RET i RETI. Instrukcje PUSH i POP występują wyłącznie z adresowaniem bezpośrednim, co często jest dość uciążliwe. Na przykład nie są możliwe następujące instrukcje:
PUSH R3
POP @R1
Poniższe makra załatwiają sprawę:
Parametrami wywołania mogą być: R0, R1, R2 ... R7, @R0 i @R1.
Jeżeli zawartość akumulatora jest nieistotna, to można te makra uprościć:
Wywołanie takiego makra może mieć np. taką postać:
PUSHR R3
POPR @R1
Czasem może wystąpić konieczność skopiowania wierzchołka stosu do rejestru pamięci. Zrobi to makro:
Instrukcje rotacji (RR RL RRC RLC) dotyczą tylko akumulatora (niestety). Często jednak zachodzi potrzeba rotacji komórki pamięci lub rejestru. Poniższe makra rozwiążą problem: