2017-05-26 67 views
1

我有以下装配命令:mov eax如何将数据存储在内存中?

mov eax, 10001 
mov [eax], DEADCODEh 

我所知道的是

  • 我说的是X86
  • EAX有32位
  • 我要保持小尾数记住

那么内存是怎么样的呢? 整个十六进制数是否存储在10001或只有一部分? 取决于那些地址10002,10003和10004是怎么样的?

+0

你为什么不尝试,找出? – Iridium

回答

3

的代码做以下的事情:

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

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

非常感谢。现在我很困惑。我认为little endian意味着高地址值分配给低位数值? – isecstud

+1

@isecstud没有。那将是大前端。 Little endian意味着最低有效字节首先出现。详细信息请参见[Wikipedia](https://en.wikipedia.org/wiki/Endianness#Little)。当问题解决后,不要忘记将答案标记为已接受。 – fuz

+0

非常感谢。现在我已经通过你的回答标记了我的问题。 – isecstud