★ ラベル定義の応用

 アセンブリ言語を始めたばかりは、数値を直接(数で)指定することが多い。しかし、数値には目印となる特徴がないから、時間の経過とともに「何のためのどういう値を指定したのか」がわかりにくくなってしまう。
 そのため、数値を事前にラベルで定義しておくわけである。こうすれば、あとから見てわかりやすく、また扱いやすくなるからだ。もちろん、ラベル定義はEQU文(擬似命令)によって行うことは承知しているだろう。
 ここまでは、ごく普通に行われることだが、例えば横幅を"XSIZE"というラベルで定義するとしよう。このとき、画面レイアウトの都合で「横幅は奇数でなければならない」という条件があったとする。
 横幅が常に固定サイズというプログラムなら、最初に奇数値を設定するだけなので何の問題もないが、これをサイズフリーの汎用ルーチンとして活用するような場合、間違って偶数値を指定しないとも限らない。こういった細かな条件は、時間の経過で往々にして忘れることがあるからだ。
 そこで、このようなときには次のようにして対応しておくとよいのである。

XSIZE: EQU 25 ;ヨコハバ ←実際のサイズではなくレベル値を示す **** Program (Don't Change) **** ←これ以降はプログラム扱いとする PROGX: EQU XSIZE*2+1 ←実際にプログラムで使われる横幅 〜 以下プログラム 〜

 ここで指定する横幅は、実際の幅ではなく横幅のレベル。だから、この例での実際の横幅は25ではなく51となる。
 ここでは、たまたま最初から奇数値(XSIZE=25)が指定してあったが、こうした設計なら間違っても偶数値が使われることはない。もちろん、プログラム中では"PROGX"がメインで使われるが、意図的に"XSIZE"を使っても構わない。
 このように、ラベルには必ずしも数値そのものではなく、既定のラベル値を利用することができるのだ。そのためには、参照するラベル値を事前に設定しておかねばならないが、これさえ守れば次々と参照していくことも可能となる。
 例えば、1行では表現しにくい複雑な計算式では、多項式のブロックとしてラベル定義しておけば、スッキリとした式になるという具合である。これは、ミスを防ぐためにも、またミスの発見を容易にするためにも有効な手法といえるだろう。