x86 MASM 程序集中的寻址模式和内存源与目标

-4 x86 assembly masm

我查看了许多关于这个主题的主题,但都令人困惑。我还没有看到任何可以帮助我的答案的视觉效果。

我不明白所有这些陈述之间的区别:

mov eax, ebx
mov [eax],ebx
mov eax, [ebx]
Run Code Online (Sandbox Code Playgroud)

如果有人可以创建一个带有值的表格并向我展示,那就太好了。

小智 7

在 Intel 的语法中,在寄存器名称、标签或常量 (*) 周围添加方括号将导致用于操作的寄存器/标签指向的内存中的数据。

(*) Ross Ridge 的这个答案在使用方括号时处理了 MASM 的一些特性。

mov rax, rbx
Run Code Online (Sandbox Code Playgroud)

将 的内容复制rbxrax.


mov rax, [rbx]
Run Code Online (Sandbox Code Playgroud)

引用的 qword加载rbxrax.


mov [rax], rbx
Run Code Online (Sandbox Code Playgroud)

rbxto qword的内容存储在 指向的内存中rax


在 C 风格的语法中,上面的表达式可以写成:

rax = rbx
rax = *rbx
*rax = rbx
Run Code Online (Sandbox Code Playgroud)