什么`Var2 DW Var1`在TurboShell / TurboAsm中意味着什么?

时间:2011-10-29 19:22:52

标签: assembly x86-16 tasm data-segment

为什么以下代码编译完美?

Data Segment

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

Data Ends

“Var2 Dw Var1”这条线甚至意味着什么? 我认为只有一个立即值可以在类型定义之后。

1 个答案:

答案 0 :(得分:2)

当你声明一个这样的变量时:

VARX    DW VARY
那时你基本上是在说:

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

在您的具体示例中,Var1是数据段中的第一个变量,因此Var2的声明等同于:

Var2   DW 0x0000

如果稍后在Var1之前添加更多变量,实际上将Var1进一步移动到细分中,Var2的值将相应调整。

这种方法的典型用法是通过获取数组开头的地址(在此上下文中为偏移量)来获得类似数组的结构的开始。