2016-12-28 59 views
-4

這條指令是做什麼的? 我不明白[ebx + 0x18]它在做什麼? COS EBX是不是這是一個寄存器,所以請大家幫我一個地址^^mov [ebx + 0x18] ecx做什麼?

+1

EBX可以包含地址... –

+0

是它增加EBX中的地址? – assemblerMan

+0

它正在訪問'ebx'所保存的內存地址,偏移量爲'24'。 –

回答

3

我假設指令是mov [ebx+0x18], ecx

這是英特爾語法,其中方括號表示內部值是取消引用,就好像它是一個指針。在這種情況下,將恆定偏移量0x18添加到存儲在ebx寄存器中的值中,然後將其解釋爲內存地址,然後解除引用。

指令因此拷貝存儲在ecx到存儲器中的值由ebx+0x18指向。

注意,ebxecx寄存器的實際內容是改性僅在地址ebx+0x18存儲器。

3

mov指令是這樣的:

mov <destination>, <source> 

因此要設置寄存器EBX相同的值作爲ECX,你會:

mov ebx, ecx 

圍繞一個操作數的括號表示使用解引用,即查看特定寄存器中的地址,並將其用作源或目的地。要設置在內存的地方在指出由EBX到ECX的值:

mov [ebx], ecx 

最後,你可以提領的時候做一些基本的算術。所以,從這個地方通過EBX設置的地方0x18(或24)個字節着指着到ECX的值:

mov [ebx + 0x18], ecx 
+0

是字節或位中的0x18偏移量? – assemblerMan

+0

@assemblerMan都不。 0x18只是一個偏移量,所以它只是一個數字,當被添加到一個地址時,產生一個地址。正如所解釋的,「X + O」產生由* X *和* O *之和給出的地址(例如0x100 + 0x18 = 0x118)。現在在x86架構中代表什麼地址?一點,一個字節,一個字? –

+0

@assemblerMan正如Margaret解釋的那樣,它確實只是增加了數字。在這種情況下,我認爲可以說地址指向* byte *位置,因此從EBX指向的位置前面的字節偏移量是24 *字節*。 –

相關問題