这条指令是做什么的? 我不明白[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. PIC寄存器(%ebx)是做什么的?
- 2. 检查汇编代码MOV 0x8中(%EBX),%EAX MOV(%eax中),%EAX CMP%EAX(%EBX)
- 3. 是什么0D组装意味着89 0D 0B00A85E - MOV [5EA8000B],ECX
- 4. 在执行“mov eax,[edx + ebx]”程序集(NASM)
- 5. “mov offset(%rip),%rax”是做什么的?
- 6. mov eax,dword ptr [eax]是做什么的?
- 7. INT%ebx有什么问题?
- 8. “18”和“0x18”有什么区别?
- 9. movl(%eax,%edx,4),%ecx指令是做什么的?
- 10. MOV [EBX],AX - 指向寄存器的指针?
- 11. 如何movl $ 0x41,%ecx
- 12. “movl(%esi,%ecx,4),eax”意味着什么?
- 13. “mov(%ebx,%eax,4),%eax”是如何工作的?
- 14. 在NASM中,MOV EBX,AX是一个有效的指令吗?
- 15. 为什么VC++ 2010经常使用ebx作为“零寄存器”?
- 16. 任何人都知道“mov edi,edi”是做什么的?
- 17. MOV指令操作数键入
- 18. 为什么mov指令没有正确执行?
- 19. 为什么mov ds,[bx]和mov ds,[2345H]有效?
- 20. 汇编程序中的代码是做什么的?
- 21. 汇编中EAX,1和EBX之间的差异?
- 22. mov ax,bx与mov ax,[bx]
- 23. gcc -O2对递归斐波那契函数做什么?
- 24. GCC错误信息“错误:不支持`mov'”是什么意思?
- 25. x86简单的mov指令
- 26. ds:esi + ecx + 7 - >它在汇编语言中意味着什么?
- 27. 在objdump输出中“-0x1(%edx,%ecx,1)”是什么意思?
- 28. WPF能做什么和不做什么?
- 29. 在Perl中做什么=〜做什么?
- 30. EBX寄存器用于内存访问的模式是什么?
EBX可以包含地址... –
是它增加EBX中的地址? – assemblerMan
它正在访问'ebx'所保存的内存地址,偏移量为'24'。 –