2011-10-29 4 views
2

なぜ次のコードは完全にコンパイルされますか?TurboShell/TurboAsmで `Var2 DW Var1`とは何ですか?

Data Segment 

Var1 Dw (any 4 digit hex value) 
Var2 Dw Var1 

Data Ends 

「Var2 Dw Var1」という行はどういう意味ですか? 私は、タイプ定義の後に即座の値だけが行くことができると考えました。その後、

VARX DW VARY 

あなたは基本的に言っている:あなたはこのような変数を宣言するとき

+0

あなたはどのアセンブラを使用していますか? – BlackBear

+0

TurboShell、TurboAsmに似ています – user1020063

+0

私の記憶が私を正しく務めているならば、それは、Var1が入っているセグメントの中のVar1がどこにあるかのオフセットを保持するためのVar2を宣言します。 'Var1'はセグメント内の最初の宣言なので、' Var2'の値は0になります。 –

答えて

2

あなたの具体的な例では

VAR  DW (offset of VARY into the segment VARY is in) 

Var1は、データセグメントの最初の変数があるので、 Var2の宣言は、次のものと同等です。

Var2 DW 0x0000 

If、late実際にはVar1をセグメントに移動すると、Var2の値はそれに応じて調整されます。

典型的な使い方は、配列の先頭からアドレス(この文脈ではオフセット)を得ることによって配列のような構造の開始を得ることです。

関連する問題