汇编寻址模式和语法

时间:2017-01-25 11:19:51

标签: assembly x86 nasm

我是汇编编程的新手,并在网上搜索教程和电子书。我在汇编语言中发现了一些关于语法的令人困惑的信息,例in a tutorial我阅读了以下代码:

MOV EBX, [MY_TABLE]     ; Effective Address of MY_TABLE in EBX
MOV [EBX], 110          ; MY_TABLE[0] = 110

在我读过的一本书中:

mov ax, [Data] ; normal direct memory addressing of a wor
mov ebx, Data ; ebx = & Data
3 mov ax, [ebx] ; ax = *ebx

所以当我们MOV[]中的变量括在EBX这样的寄存器中时,我们在寄存器中存储了什么值?该内存位置的地址或实际值?

1 个答案:

答案 0 :(得分:1)

来自the NASM manual

  

规则很简单,对存储位置的内容的任何访问都需要在地址周围加上方括号,而对变量的地址的任何访问都不需要。因此,mov ax,foo形式的指令将总是引用编译时常量,无论是EQU还是变量的地址;并访问变量bar内容,您必须编写mov ax,[bar]的代码。

所以

MOV EBX, [MY_TABLE]     ; Effective Address of MY_TABLE in EBX

是错误的:它没有将EBX设置为一个地址,而是将其设置为存储在MY_TABLE地址中的值。