文の集合に名前を付けて、1 つの文として定義します。マクロ定義名は 1 つの命令のように使用でき、定義内容である文の集合に置換されます(マクロ呼び出し)。単に「マクロ」と呼ばれるものは、通常、この文で定義したマクロのことです。
MACRO 文はマクロを定義するだけで、コードやデータは作成しません。実際にコードやデータを作成するには、改めてマクロ呼び出しを行う必要があります。
構文 mac MACRO [f-args ,...] statements ... ENDM 例 PUTC MACRO CHAR MOV DL, CHAR MOV AH, 02h INT 21h ENDM COPY MACRO SRC, DST, LEN MOV SI, SRC MOV DI, DST MOV CX, LEN REP MOVS ENDM
mac は、マクロの名前です。この名前を後で命令のように使用します。
f-args は、仮パラメータです。これを指定した場合は、statements 中にある同じ綴りのすべての識別子が、マクロ呼び出し時に指定される実パラメータと置換されます。マクロパラメータの置換は単純な文字列置換として行われるため、statements 中の任意の箇所に仮パラメータを使用できます。仮パラメータは、カンマで区切って複数個指定できます。
statements は、マクロの定義内容となるアセンブラの文です。複数行に渡って記述できます。最後に ENDM 文を記述する必要があります。
statements 中に再び MACRO 文を記述して、マクロ定義を入れ子にすることもできます。この場合、内側のマクロが定義されるのは、外側のマクロが定義されたときではなく、外側のマクロが呼び出されたときです。
マクロの定義内容は変更できます。同じ mac を持つ新しい MACRO 文を実行すれば、旧い定義内容は消滅します。また、PURGE 文でマクロの内容を消去することもできます。