這條指令是做什麼的? 我不明白[ebx + 0x18]它在做什麼? COS EBX是不是這是一個寄存器,所以請大家幫我一個地址^^mov [ebx + 0x18] ecx做什麼?
回答
我假設指令是mov [ebx+0x18], ecx
?
這是英特爾語法,其中方括號表示內部值是取消引用,就好像它是一個指針。在這種情況下,將恆定偏移量0x18
添加到存儲在ebx
寄存器中的值中,然後將其解釋爲內存地址,然後解除引用。
指令因此拷貝存儲在ecx
到存儲器中的值由ebx+0x18
指向。
注意,ebx
和ecx
寄存器的實際內容是不改性僅在地址ebx+0x18
存儲器。
的mov
指令是這樣的:
mov <destination>, <source>
因此要設置寄存器EBX相同的值作爲ECX,你會:
mov ebx, ecx
圍繞一個操作數的括號表示使用解引用,即查看特定寄存器中的地址,並將其用作源或目的地。要設置在內存的地方在指出由EBX到ECX的值:
mov [ebx], ecx
最後,你可以提領的時候做一些基本的算術。所以,從這個地方通過EBX設置的地方0x18
(或24)個字節着指着到ECX的值:
mov [ebx + 0x18], ecx
是字節或位中的0x18偏移量? – assemblerMan
@assemblerMan都不。 0x18只是一個偏移量,所以它只是一個數字,當被添加到一個地址時,產生一個地址。正如所解釋的,「X + O」產生由* X *和* O *之和給出的地址(例如0x100 + 0x18 = 0x118)。現在在x86架構中代表什麼地址?一點,一個字節,一個字? –
@assemblerMan正如Margaret解釋的那樣,它確實只是增加了數字。在這種情況下,我認爲可以說地址指向* byte *位置,因此從EBX指向的位置前面的字節偏移量是24 *字節*。 –
- 1. mov eax,[ebx + ecx * 4]在NASM中的含義是什麼?
- 2. 推ecx做什麼?
- 3. PIC寄存器(%ebx)是做什麼的?
- 4. 檢查彙編代碼MOV 0x8中(%EBX),%EAX MOV(%eax中),%EAX CMP%EAX(%EBX)
- 5. 是什麼0D組裝意味着89 0D 0B00A85E - MOV [5EA8000B],ECX
- 6. 爲什麼我們使用子$ 0x18,%rsp?
- 7. 在執行「mov eax,[edx + ebx]」程序集(NASM)
- 8. 分析彙編代碼EX「mov%eax,0x8(%ebx)」
- 9. AsmJit相當於mov eax,[ecx + 0CC]
- 10. NASM:MOV上的SegFault ECX
- 11. mov eax,dword ptr [eax]是做什麼的?
- 12. 「mov offset(%rip),%rax」是做什麼的?
- 13. INT%ebx有什麼問題?
- 14. 爲什麼Console.WriteLine()使用ecx寄存器,事件雖然eax和ebx是免費的?
- 15. 「18」和「0x18」有什麼區別?
- 16. 彙編代碼是什麼:mov edx,2,3,4是做什麼的?
- 17. movl(%eax,%edx,4),%ecx指令是做什麼的?
- 18. NASM MOV取決於地方
- 19. MOV [EBX],AX - 指向寄存器的指針?
- 20. 「movl(%esi,%ecx,4),eax」意味着什麼?
- 21. 如何movl $ 0x41,%ecx
- 22. 爲什麼VC++ 2010經常使用ebx作爲「零寄存器」?
- 23. 「mov(%ebx,%eax,4),%eax」是如何工作的?
- 24. 在NASM中,MOV EBX,AX是一個有效的指令嗎?
- 25. 任何人都知道「mov edi,edi」是做什麼的?
- 26. 關於這個彙編程序在做什麼MOV的建議?
- 27. 這條指令是做什麼的?: - mov%gs:0x14,%eax
- 28. Linux上的Masm32:爲什麼mov [bx],ax工作,但mov [ax],bx(或mov [bl],al)不?
- 29. MOV指令操作數鍵入
- 30. 爲什麼mov指令沒有正確執行?
EBX可以包含地址... –
是它增加EBX中的地址? – assemblerMan
它正在訪問'ebx'所保存的內存地址,偏移量爲'24'。 –