这条指令的作用是什么? 我不明白[ebx + 0x18]它在做什么? cos ebx不是一个地址它是一个寄存器所以请帮帮我^^
答案 0 :(得分:3)
我认为指令是mov [ebx+0x18], ecx
?
这是Intel语法,其中方括号表示内部的值是解除引用,就像它是一个指针一样。在这种情况下,常量偏移0x18
被添加到ebx
寄存器中存储的值,然后将其解释为一个内存地址,然后解除引用。
因此,该指令将ecx
中存储的值复制到ebx+0x18
指向的内存中。
请注意,ebx
和ecx
寄存器的实际内容未已修改 - 仅限地址ebx+0x18
的内存。
答案 1 :(得分:3)
mov
指令是这样的:
mov <destination>, <source>
因此,要将寄存器EBX设置为与ECX相同的值,您需要:
mov ebx, ecx
操作数周围的括号表示使用解除引用,即查看特定寄存器中的地址,并将其用作源或目标。要将EBX指向的内存中的位置设置为ECX:
的值mov [ebx], ecx
最后,你可以在解除引用时做一些基本的算术。因此,要将位置0x18
(或24)字节从EBX指向的位置向前设置为ECX的值:
mov [ebx + 0x18], ecx