2016-12-28 66 views
4

昨天我正在學習SIZEOF和TYPE運算符。雖然這樣做,我創建了一個數組,x86中的內存分配彙編語言

Array QWORD 1h,2h,3h,4h,5h 

和.CODE節,我寫的,

MOV eax, SIZEOF Array 

組裝之後,這是尷尬的,我只拿到了28分配的字節數組(使用可視化工作室社區2015)。我在調試會話中看到了寄存器的值。

這裏我的問題是,每個QWORD佔用8個字節的內存。那麼,爲什麼我沒有將SIZEOF Array設置爲40?

更糟。 當我運行此,

Array QWORD 1h 

它給了我8個字節預期

Array QWORD 1h,2h 

給了我10 .. !! 而且,

Array QWORD 1h,2h,3h 

給了我18 .. !!
依此類推...

+0

什麼是正在使用的彙編程序?用它標記帖子。並使標題精確:-) –

回答

5

默認情況下,Visual Studio的註冊窗口顯示十六進制數字。難道是你用0x28弄糊塗28嗎? 0x28與40.相同(同樣,0x10爲16,0x18爲24,依此類推。)

+0

謝謝你zneak。寄存器被設置爲顯示十六進制。我現在改變他們。謝謝..!! – Vasanth

+2

@Vasanth十六進制是默認的,因爲它允許你看到特定的字節,所以通過查看'eax'中的''12345678'''你知道'al'是'0x78','ah'是'0x56'和'ax '是'0x5678' ...嘗試用十進制...:D – Ped7g

+0

謝謝.. @ Ped7g – Vasanth