【问题标题】:How does mov eax store data in memory?mov eax 如何将数据存储在内存中?
【发布时间】:2017-10-27 02:13:44
【问题描述】:

我有以下汇编命令:

mov eax, 10001
mov [eax], DEADCODEh

我知道的是

  • 我说的是X86
  • eax 有 32 位
  • 我必须牢记小端序

那么内存是怎样的呢? 整个十六进制数是存储在 10001 还是其中的一部分? 这取决于地址 10002、10003 和 10004 的样子?

【问题讨论】:

  • 你为什么不试试看呢?

标签: assembly memory-management nasm masm cpu-registers


【解决方案1】:

代码做了以下事情:

  1. 使用值 10001(十进制)加载 eax。这是十六进制的 0x2711。 eax 的值现在是 0x00002711。请注意前导零,因为 eax 是一个 32 位寄存器。
  2. 将值 0xdeadc0de(注意 0,您错误地复制/粘贴)存储到内存中 eax 中包含的地址。由于字节序是小端,所以10001附近的内存将有以下内容:

    10001: 0xde
    10002: 0xc0
    10003: 0xad
    10004: 0xde
    

【讨论】:

  • 非常感谢。现在我很困惑。我认为小端序意味着高地址值分配给低位值?
  • @isecstud 不。那将是大端。 Little endian 意味着最低有效字节在前。有关详细信息,请参阅Wikipedia。问题解决后,不要忘记将答案标记为已接受。
猜你喜欢
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
  • 2012-10-10
  • 1970-01-01
  • 2017-05-05
  • 2016-05-29
  • 2011-05-04
  • 1970-01-01
相关资源
最近更新 更多