【问题标题】:meanings of mov instruction with or without [] brackets around the source register in nasm在 nasm 中源寄存器周围有或没有 [] 括号的 mov 指令的含义
【发布时间】:2012-05-09 06:16:57
【问题描述】:

我对组装有点生疏了。我想问你们一些问题。

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

    mov EAX, [EBX]

【问题讨论】:

    标签: assembly x86 nasm cpu-registers mov


    【解决方案1】:
    mov EAX, EBX
    

    将 EBX 的值移动到 EAX 中,同时

    mov EAX, [EBX]
    

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

    【讨论】:

    • +1。恭喜您获得投票权! (你的回答很好。)
    • 恭喜您获得评论权!一个答案还不错。
    • 这里的语法有点混乱。 “在 EAX 中移动 EBX 中的地址值”?你的意思是“进入 EAX”?
    【解决方案2】:

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

    a = b;
    

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

    a = *b;
    

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

    还有很多很多可以说的,但前面的内容让你明白了。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多