マクロ命令の作り方

マクロ命令の作り方の詳細を説明しています。

【マクロ命令の概要】
マクロ命令は使う人が任意に定義出来る命令セットで、アセンブラは
アセンブルする時にそれらを実際の命令に置き換えてアセンブルします。
マクロ命令により得られる効果は、
 ・抽象化が高度になり読み易くなる。
 ・繰り返し使われる手順を簡単にできる。
 ・簡単に修正出来る。
 ・デバッグし易くなる。
【マクロ命令の形式】
マクロ命令を構成するための指示命令は下記となっており、これらにより
マクロ命令が構成出来る。

【ENDM】End a Macro Definition
【MACRO】Declare Macro Definition
  1.形式
    <label>  macro  [<arg>,...,<arg>]
          -----
          -----
          endm

  2.説明
   マクロ命令とは、繰り返し同じコードを使うような場合、1命令で
   複数の命令を代替え出来るようにする命令群である。マクロ命令は
   使う前にこのMACRO命令で定義されていなければならない。
  3.使用例
    Read   macro  device, buffer, count
         movlw  device
         movwf  ram_20
         movlw  buffer   ;buffer address
         movwf  ram_21
         movlw  count    ;byte count
         call   sys_21   ;read file call
         endm

  4.呼び出し方
   メインプログラムの中で、このマクロ命令を使うには下記のようにする。
        <macro_name>   [<arg>,...,<arg>]

     ここで<macro_name>と<arg>は、MACRO命令で定義したlabelである。
     引数である<arg>は任意の数が指定できる。

【EXITM】Exit from a Macro
  1.形式
     exitm
  2.説明
   マクロ命令群から強制的に抜け出して、マクロのアセンブルを終了させる。
   ENDMと同じ効果。
  3.使用例
   test   macro   filereg
        if    filereg == 1
             exitm
        else
             error  "bad file assignment"
        endif
        endm


【LOCAL】Define Local Macro Variable
  1.形式
     local  <label>[,<label>]
  2.説明
   マクロ命令構造の中だけで使われる変数を指定する。マクロの外に
   同じ変数名があってもそれは別のものとして扱われる。
【マクロに適す処理とは】
マクロ命令を使うと便利になるのはどんな処理でしょうか? 単純に繰り返す
処理ならサブルーチンにして、CALL命令で呼べば問題無いですし、マクロ命令
にするとかえって毎回コード化されますからサブルーチンより無駄が多くなる
ことになってしまいます。
マクロ命令化すべき処理とは、下記の様な処理です。

1.同じ処理内容だが変数の格納場所が毎回異なる場合
  処理そのものが比較的単純で同じことの繰り返しなのだが、サブルーチン
  にすると、変数の場所を指定する処理のためにかえってプログラムが大きく
  なってしまうような時は、サブルーチン化するよりマクロ化した方が有利。

2.高速処理が必要な繰り返し処理
  1と同様サブルーチン化するとプログラムサイズが大きくなってしまう様な
  場合、処理速度が遅くなってしまう。このような速度最優先の時には、
  マクロ化して無駄を一切省きながら、異なる処理ができる。
  当然プログラム全体は繰り返しが多い時には大きくなってしまう時もある。
    


  次のページへ    目次ページへ