2013-06-29 66 views
1

操作码与参数:8B55 08
拆解:MOV EDX,DWORD PTR SS:[EBP+8]下面的x86 MOV指令有什么作用?

这是否移动价值地址EBP+8,并将其放入EDXDWORD PTR是什么意思?

什么是测试x86指令的最简单方法?有没有办法让我定义所有的寄存器和标志,然后很容易地执行/测试这样的指令?

我用下面的手册,但它是相当困难的,在第一次读到:http://download.intel.com/products/processor/manual/325383.pdf

回答

4

DWORD PTR指定的操作数是32位。它被称为尺寸指令,并在x86 Assembly Guide

中进一步解释。当汇编器不能指出操作数的实际大小时,您将被迫使用这种修饰符。

在考虑中的指令中的情况下,使用EBP当作为基地址是SS,所以随着从堆栈段(SS)32位值到EDX

像所指出的@harold@brendan缺省段你应该可以使用mov edx, [ebp + 8]

测试上述指令的一种方法是使用inline assembler in Visual Studio并使用registers window,其中您将能够编辑和显示不同的寄存器值。

+3

当'ebp'是基地址时'SS'是默认段,顺便提一下 – harold

+2

原来的程序集可能已经'mov edx,[ebp + 8]' - 没有(不必要的)SS覆盖在操作码中,汇编器应该知道'EDX'是32位而没有'DWORD PTR'部分。我认为反汇编为完整性添加了这些东西。 – Brendan