2013-06-29 105 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