マクロとプロシージャの主な違いは、マクロは10命令以下の少ない命令数に対して使用され、プロシージャは10命令以上の多い命令数に対して使用されることです。
マイクロプロセッサは、1つの集積回路(IC)上でCPU(Central Processing Unit)のタスクを実行するコンピュータ・プロセッサです。
出力デバイスを処理し、そのメモリに格納された命令を処理して出力を提供する。
このプロセッサは、組合せ型デジタル回路と逐次型デジタル回路で構成されています。
また、アセンブリ言語は、マイクロプロセッサのプログラミングを支援するプログラミング言語です。
全体として、マクロとプロシージャはマイクロプロセッサのプログラミングにおける2つの概念です。
Macroとは
マクロは名前を持つ命令の集合で、プログラマはプログラム中の任意の場所でそれを使用することができます。
マクロの主な目的は、モジュール式プログラミングを実現することです。
さらに、マクロは%macro命令で始まり、%endmacro命令で終わります。
%macro macro_name number_of_params
%endmacro
macro_name はマクロを識別するためのもので、number_of_params は数値パラメーターを意味する。
また、マクロ名と必要なパラメータを用いてマクロを呼び出すことができる。
したがって、同じ命令を複数回実行する必要がある場合、プログラマはその命令をマクロに記述し、プログラム内で使用することができる。
プロシージャとは
プロシージャは、大規模なプログラムを読みやすく、保守しやすく、修正しやすくするために有用です。
通常、プロシージャは3つの主要なセクションから構成されています。
まず、プロシージャを識別するのに役立つプロシージャ名。
次に、実行するタスクを記述するボディ内のステートメント。
最後に、戻り値を表すリターンステートメント。
Macroの構文は以下の通りです。
proc_name。
プロシージャ本体
…
RET
さらに、CALL命令を使ってプロシージャを呼び出す関数もあります。
その命令は以下の通りです。
CALL procedure_name
最後に、プロシージャを実行した後、RET命令で呼び出し元のプロシージャに制御を移します。
マクロとプロシージャの違い
定義
マクロは、モジュール式プログラミングをサポートするために、マクロ定義内に記述された一連の命令です。
一方、プロシージャは特定のタスクを実行する命令の集合であり、プログラマはこれを繰り返し呼び出すことができる。
したがって、これがマクロとプロシージャの根本的な違いです。
インストラクションの数
マクロは少ない命令数(多くは10命令以下)に使用され、プロシージャは多い命令数(多くは10命令以上)に使用されます。
これがマクロとプロシージャの大きな違いです。
必要メモリ
また、マクロはより多くのメモリを必要としますが、プロシージャはより少ないメモリで済みます。
CALLとRET
また、マクロはCALL命令とRET命令を必要としませんが、プロシージャはCALL命令とRET命令を必要とします。
マシンコード
マクロでは、機械語コードはマクロを呼び出すたびに生成される。
しかし、プロシージャでは、マシンコードは一度だけ生成されます。
したがって、この点もマクロとプロシージャの違いです。
パラメータを渡す
マクロでは、パラメータはマクロを呼び出す文の一部として渡されます。
一方、プロシージャでは、パラメータは、レジスタやスタックのメモリ位置で渡される。
この点も、マクロとプロシージャの違いです。
オーバーヘッド時間
また、マクロはプロシージャを呼び出してプログラムを戻すまでのオーバヘッドタイムが不要ですが、プロシージャはプロシージャを呼び出して呼び出したプロシージャに戻るまでのオーバヘッドタイムが必要です。
実行速度
さらに、マクロはプロシージャよりも高速に実行されます。
結論
簡単に説明すると、アセンブリ言語はマイクロプロセッサのプログラミングに使われる一般的なプログラミング言語であり、マクロとプロシージャはアセンブリの2つの概念です。
マクロとプロシージャの主な違いは、マクロは少ない命令数(多くは10命令以下)に使用され、プロシージャは多い命令数(多くは10命令以上)に使用されることである。
</macro