Assembly 在程序集中查找操作代码/字节

Assembly 在程序集中查找操作代码/字节,assembly,x86,Assembly,X86,对于这些代码行,我需要找到操作代码、目标代码的字节数以及执行所需的时钟周期数。假设该值引用了内存中的一个字,而Double引用了一个doubleword sub wordOp, ax sub eax,10 add dblOp, 10 add eax,[ebx] 有人能解释一下我如何获得代码行的这些值吗?我不知道这是否有帮助,但似乎您需要做的就是将此代码放入\u asm子句中: void main() { short a; long b; __asm {

对于这些代码行,我需要找到操作代码、目标代码的字节数以及执行所需的时钟周期数。假设该值引用了内存中的一个字,而Double引用了一个doubleword

sub wordOp, ax
sub eax,10
add dblOp, 10
add eax,[ebx]

有人能解释一下我如何获得代码行的这些值吗?

我不知道这是否有帮助,但似乎您需要做的就是将此代码放入
\u asm
子句中:

void main()
{
    short a;
    long  b;
    __asm
    {
        sub a,ax
        sub eax,10
        add b,10
        add eax,[ebx]
    }
}
然后,在
\u asm
子句的第一行上放置一个断点,并在调试模式下运行程序。然后,右键单击文本,并选择“转到反汇编”,这将显示以下内容:

          sub a,ax
0030139E  sub word ptr [a],ax
          sub eax,10
003013A2  sub eax,0Ah
          add b,10
003013A5  add dword ptr [b],0Ah
          add eax,[ebx]
003013A9  add eax,dword ptr [ebx]
...
003013AB
当然,上面的地址在我的本地程序中,但是代码的大小可以很容易地计算为0x003013AB-0030139E=D,即13个字节


顺便说一句,我不确定
短a
长b
(它也可以是
intA
双b
),所以你需要问给你这个任务的人
wordOp
dblOp

的确切含义。我喜欢这个在线汇编程序:

但是时钟周期的数量取决于cpu架构


Dirk

汇编语言(以及通常的操作码)取决于底层平台(编译器、CPU等)。您使用的是什么平台?英特尔80X86。或者我需要更具体一点吗?编译器(或者至少,您使用的是什么IDE,是Visual Studio吗)?是的,Visual Studio需要编译it@dwelch:是否将文件保存为
.s
并编译?