配列を使用するときは、多くの場合、あなたはその大きさを知ってほしいです。次の例では、LISTSIZEがリスト宣言一定のサイズを使用しています。
リストBYTE 10,20,30,40
LISTSIZE = 4
明示的なサイズの配列は、フォローアップは、配列要素を挿入または削除されます場合は特に、プログラミングエラーにつながる宣言する。宣言された配列のサイズより良いアプローチは、この値を計算するようにアセンブラにさせることです。
$演算子(現在のアドレスカウンタ)は、現在のオフセットプログラム文を返します。次の例では、現在のリスト・アドレス・カウンタ($)、算出LISTSIZEから減算されるオフセット
リストBYTE 10,20,30,40
LISTSIZE =($ -リスト)
LISTSIZEはすぐにリストに従わなければなりません。以下の実施例、LISTSIZE値(24)大上で計算、記憶スペースVAR2を使用するので、現在のリスト及びオフセットアドレスカウンタとの間の距離に影響を与えます。
リストBYTE 10,20,30,40
VAR2のBYTE 20 DUP(?)
LISTSIZE =($ -リスト)
アセンブラは、この作業を完了するように手動で、文字列の長さを計算しないでください。
BYTE "これは含む、長い文字列である" MYSTRING
BYTE "の文字の任意の数の"
( -のmyString $)myString_len =を
Wordやダブルワードグループ
計算されるべきバイトの数は、アレイのサイズと、要素のアレイに含まれていない場合、個々の要素で割った合計サイズ(バイト)であるべきです。例えば、以下の実施例は、2バイト(16ビット)のアレイ内の各単語ので、アドレス範囲は2で除算されます。
リストWORD 1000H、2000H、3000H、4000H
LISTSIZE =($ -リスト)/ 2
同様に、4バイトのダブルワード長、及び生成する配列要素4の数で割ったため、全長の各要素:
リストDWORDのl0000000h、20000000h、30000000h、40000000h
LISTSIZE =($ -list)/ 4
次へ:EQUディレクティブ
高度の記事を読んでお勧めします