【问题标题】:What does `Var2 DW Var1` mean in TurboShell/TurboAsm?TurboShell/TurboAsm 中的“Var2 DW Var1”是什么意思?
【发布时间】:2011-10-29 19:22:52
【问题描述】:

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

Data Segment

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

Data Ends

“Var2 Dw Var1”这一行是什么意思? 我认为只有立即值可以跟在定义类型之后。

【问题讨论】:

  • 你使用的是哪个汇编器?
  • TurboShell ,类似于 TurboAsm
  • 如果我的记忆对我有帮助(可能不是),它将声明Var2 以保存Var1Var1 所在段内的偏移量。在具体问题示例中,Var2 的值为 0,因为 Var1 是段内的第一个声明。
  • @LasseV.Karlsen 哦,谢谢!!!!
  • 您是否通过在Var1 之前声明更多变量并查看Var2 的值是否如我所说的那样变化来测试它?

标签: assembly x86-16 tasm data-segment


【解决方案1】:

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

VARX    DW VARY

那么你基本上是在说:

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

在你的具体例子中,Var1是数据段的第一个变量,所以Var2的声明相当于:

Var2   DW 0x0000

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-02
    • 2015-06-17
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多