汇编寻址模式和语法

问题描述 投票:0回答:1

我是汇编编程的新手,并在网上搜索教程和电子书。我在汇编语言中发现了一些关于语法的令人困惑的信息,例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这样的寄存器时,我们在寄存器中存储了什么值?该内存位置的地址或实际值?

assembly x86 nasm
1个回答
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地址的值。

© www.soinside.com 2019 - 2024. All rights reserved.