MASM取消引用 - 何时需要方括号?

时间:2016-04-28 04:25:26

标签: assembly x86 masm

首先,对不起基本问题 - 我是汇编语言/ MASM的新手。我对使用OFFSET,方括号和取消引用非常困惑。

这是我的理解:

  1. 变量/数据标签是内存地址。方括号表示取消引用,因此[var]将检索地址var处的内容。 MASM指令自动取消引用内存操作数,因此以下内容都将var的内容复制到eax:

    MOV eax, var
    MOV eax, [var]
    
  2. 要将var的地址移动到寄存器,需要执行

    MOV reg, OFFSET var
    

    但现在看来var和[var]不再相同了:

    var  DWORD  10h
    mov esi, OFFSET var
    mov eax, [esi]     ; eax = 10h
    mov eax, esi       ; eax = address of var
    

    这是我的困惑开始的地方。鉴于总是暗示解除引用,何时需要方括号?什么时候可选?

  3. 此外,以下内容将使用var1的地址初始化var2

    var1 byte 10h,20h,30h,40h
    var2 dword var1
    var2 dword OFFSET var1   ; equivalent
    
  4. 现在,var1什么时候引用地址?它什么时候引用内容?

0 个答案:

没有答案