(局所)ラベルの付け方 ルール

アセンブラの場合、データラベルやサブルーチンのエントリラベル以外

 ほとんど、無意味なラベルが 多数 必要になってきます。

 ラベルが重複しては、エラーになるし、かといって

 重複しない無意味な名前を付けるほうが、苦痛となります。


そこで、工夫されたのが、ローカルラベル です。

 局所ラベルとも言います。(重複してもOK)

 便利な機能なんですが、アセンブラによって仕様が、まちまち

 まったく、互換性が無い!と あきらめた方が良いくらいです。


メインに使うアセンブラは NASM に決めましたが、

 デバッガのことも考えると TASM も捨てがたく、

 できれば、手間が少なく移植できるに越した事はありません。

 それぞれ、人によって、アセンブラも好みがあるでしょうし、

 どうしても、TASM で開発したいという人がいるかもしれません。

【ローカルラベルのルール】

  1. NASM         .(ドット)で始まるラベル。
  2. TASM         @@(2つのアットマーク)で始まるラベル。

とりあえずは、NASMを使うので、
 ドットで始めますが、あえて

 .@Label:

 のように、.(ドット)+@(アットマーク)を先頭につけることにします。

 全てのラベルを、このルールで統一しておくと、

 エディタの「置換」機能で、簡単に .@ を @@ に替えることができます。


【ラベルの命名ルール】

 さらに、アセンブラでは、ラベルに何処から飛んでくるのかが、非常に分かりづらく

 プログラムの可読性を落としている。

 少しでも、それを助けるために、ラベルにある程度の意味を持たせる。



 ① ジャンプで↓へ飛ぶラベル。          → 先頭に P を付ける。
   例:
        jmp   .@Pabc
        ・・・・・・
        ・・・・・・
   .@Pabc:
   つまり、ここへは、上からしか飛んでこない。
   (Passの略と覚える)



 ② ループのために↑へ戻るラベル。        → 先頭に L を付ける。
   つまり、ここへは、下からしか飛んでこない。
   例:
  .@Loop1:
        ・・・・・・
        ・・・・・・
        jne   .@Loop1
   (Loopの略)



 ③ 同じような判定の繰り返しで↓へ飛ぶラベル。  → 先頭に N を付ける。
   例:
        jmp   .@Next1
        ・・・・・・
        ・・・・・・
   .@Next1:
   つまり、ここへは、上からしか飛んでこない。
   (Nextの略)




 ④ ループでは無いが、↑へ戻るラベル。      → 先頭に B を付ける。
   例:
  .@Back1:
        ・・・・・・
        ・・・・・・
        jne   .@Back1
   (Backの略)

 ④' または、上からも下からも飛んで来るラベル。
   例:
        jmp   .@Both
        ・・・・・・
  .@Both:
        ・・・・・・
        jne   .@Both
   (Bothの略)




 ⑤ サブルーチンを抜ける↓へ飛ぶラベル。    → 先頭に Q を付ける。
   例:
        jmp   .@Qsub
        ・・・・・・
        ・・・・・・
   .@Qsub:
        retn
   つまり、ここへは、上からしか飛んでこない。
   (Quitの略)



 ⑤' サブルーチンの終了↓へ飛ぶラベル。  → 先頭に E を付ける。
   例:
        jmp   .@End1
        ・・・・・・
        ・・・・・・
   ,@End1:
        pop AX
        retn
   つまり、ここへは、上からしか飛んでこない。
   (Endの略)

  または、異常でサブルーチンの終了↓へ飛ぶラベル。 → 先頭に E を付ける。
   例:
        jmp   .@Err1
        ・・・・・・
        ・・・・・・
   ,@Err1:
        ・・・・・・ 異常処理
        pop AX
        retn
   つまり、ここへは、上からしか飛んでこない。
   (Errorの略)




あんまり、たくさんルールを作ると、かえって慣れないことになるので
 P,L,N,Q,E の 5つ のみとしておきます。
 ラベル名を見ただけで、上下 何処から飛んで来るのかが ある程度分かります。