Что означает «Var2 DW Var1» в TurboShell / TurboAsm? - PullRequest
2 голосов
/ 29 октября 2011

почему следующий код отлично компилируется?

Data Segment

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

Data Ends

что вообще означает строка "Var2 Dw Var1"? Я думал, что после определения типа может идти только непосредственное значение.

1 Ответ

2 голосов
/ 29 октября 2011

Когда вы объявляете переменную следующим образом:

VARX    DW VARY

, тогда вы в основном говорите:

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

В вашем конкретном примере Var1 является первой переменной всегмент данных, поэтому объявление Var2 эквивалентно:

Var2   DW 0x0000

Если позже вы добавите больше переменных до Var1, фактически перемещая Var1 дальше в сегмент, значениеVar2 будет корректироваться соответствующим образом.

Типичное использование этого - получить начало массивоподобных конструкций, получив адрес (смещение в данном контексте) начала массива.

...