5

我对大会有点生疏。我想问你们一些问题。

  1. 这些汇编指令在 NASM 中有效吗?
  2. 有什么区别,我们应该什么时候使用它们?
    mov EAX, EBX

对比

    mov EAX, [EBX]
4

2 回答 2

17
mov EAX, EBX

将 EBX 的值移动到 EAX 中,而

mov EAX, [EBX]

将 EBX 中的地址值(因此 EBX 必须包含有效地址,否则会出现分段错误)到 EAX 中。

于 2012-04-29T00:08:59.833 回答
8

你会读C吗?如果是这样,那么给定先前的定义int a, b;,第一条指令或多或少等同于

a = b;

然而,给定先前的定义int a, *b;,第二条指令或多或少等同于

a = *b;

除了 EAX 和 EBX 是寄存器而不是堆栈驻留变量。

可以说的还有很多很多,但前面的内容给了你这个想法。

(顺便说一下,NASM——我承认在过去五年中没有使用过——与 GNU 的汇编器相比,它以相反的顺序呈现参数。NASM 将目标寄存器放在左边,源寄存器放在右边,而 GNU反之亦然。与 GNU 的“AT&T 语法”相比,NASM 的约定也称为“英特尔语法”。)

于 2012-04-29T00:04:06.513 回答