172
6. Makrojęzyk asemblera MA SM
dyrektywy pomocnicze PURGE, EXITM, LOCAL specjalne operatory & ;;! %
dyrektywy asemblacji warunkowej IFxxx/ENDIF (zob. p. 4.3.5)
dyrektywy sterujące listingiem .LIST, .XLIST, .LALL, .SALL, .XALL, .LFCOND
.SFCOND, .TFCOND, %OUT (zob. p. 4.3.7).
Makroinstrukcja REPT / ENDM
Makroinstrukcja REPT/ENDM powoduje powtarzanie n razy (liczba określona przez argument) bloku programu źródłowego. Składnia makroinstrukcji jest następująca
REPT wyrażenienumeryczne
; blok programu powtarzany n razy ; n określone przez wyrażenie numeryczne ENDM
Przykłady
• Wywołanie makroinstrukcji
REPT 4
ENDM
powoduje wygenerowanie w programie sekwencji dyrektyw DW ?
DW ?
• Wywołanie makroinstrukcji
NOP ENDM
powoduje wygenerowanie w programie trzech rozkazów NOP. ♦
Makroinstrukcja IRP/ ENDM ____
Makroinstrukcja IRP/ENDM powoduje powtarzanie bloku programu z możliwością zmiany w kolejnych powtórzeniach jednego z argumentów. Składnia makro-instrukcji jest następująca
powered by
6.1. Makroinstrukcje niedefiniowane
IRP parametrformalny, < lista argumentów>
; powtarzany blok programu ; w' miejsce parametru formalnego przy każdym ; powtórzeniu są podstawiane ; kolejne argumenty z listy argumentów ; lista argumentów musi być w nawiasach <... >
ENDM
Przykłady
• Wywołanie makroinstrukcji
IRP ZMIENNA, <5,?,< 1,2>,OFFFFH >
DW ZMIENNA ENDM
powoduje wygenerowanie w programie sekwencji dyrektyw
DW 5 DW?
DW 1,2 DW OFFFFH
• Wywołanie makroinstrukcji
IRP X, < 0 /TEKST’,255 >
DB X ENDM
powoduje wygenerowanie w programie DB 0
DB TEKST
Apostrof kończący TEKST zostanie potraktowany jako koniec listy argumentów. +
Makroinstrukcja IRPC/ ENDM___
Makroinstrukcja IRPC/ENDM powoduje powtarzanie bloku programu z możliwością zmiany w kolejnych powtórzeniach jednego z argumentów (np. znaku). Składnia makroinstrukcji jest następująca
IRPC parametr formalny, [ < ]lista_znakówl > ]
; powtarzany blok programu ; zamiast parametru formalnego przy każdym ; powtórzeniu są podstawiane ; kolejne znaki z listy znaków ; lista znaków może być w nawiasach <... >
ENDM