2017-05-26 69 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