ソースの中で一連の命令群を何回も記述する場合,マクロ機能を使用すると便利です。
マクロ機能とは,.MACRO,.ENDM疑似命令により,マクロ・ボディとして定義された一連の命令群をマクロ参照している箇所に展開することです。
マクロは,ソースの記述性を向上させるために使用するもので,サブルーチンとは異なります。
マクロとサブルーチンには,それぞれ次のような特徴があります。それぞれ目的に応じて有効に使用してください。
プログラム中で何回も必要となる処理を1つのサブルーチンとして記述します。サブルーチンは,アセンブラにより一度だけ機械語に変換されます。
サブルーチンの参照には,サブルーチン・コール命令(一般にはその前後に引数設定の命令が必要)を記述するだけで済みます。したがって,サブルーチンを活用することにより,プログラムのメモリを効率よく使用することができます。
プログラム中の一連のまとまった処理をサブルーチン化することにより,プログラムの構造化を図ることができます(プログラムを構造化することにより,プログラム全体の構造が分かりやすくなり,プログラムの設計が容易になります)。
.MACRO,.ENDM疑似命令によりマクロ・ボディとして定義された一連の命令群が,マクロ参照時にその場所に展開されます。アセンブラは,マクロ参照を検出するとマクロ・ボディを展開し,マクロ・ボディの仮パラメータを参照時の実パラメータに置き換えながら,命令群を機械語に変換します。
たとえば,処理手順は同じであるがオペランドに記述するデータだけが異なる命令群がある場合,そのデータに仮パラメータを割り当ててマクロを定義します。マクロ参照時には,マクロ名と実パラメータを記述することにより,記述の一部分だけが異なる種々の命令群に対処することができます。
サブルーチン化の手法が,メモリ・サイズの削減やプログラムの構造化を図るために用いられるのに対し,マクロは,コーディングの効率を向上させるために用いられます。