0

我正在使用以下代码:

int _tmain(int argc, _TCHAR* argv[])
{
    __asm{ 
           "MOV EAX, DMSN[0]";
           "LEA EBX, DMSN[0]";
           "CALL EBX";
         };
    return 0;
}

MOV EAXLEA EBX, 稍后将包含两个不同的数组。但是对于示例,它们将包含相同的内容。

我正在使用以下内容:

const BYTE DMSN[694]={blah, blah, blah};

但我出现了这些错误:

1>c:\users\1337\documents\visual studio 2010\projects\test2\test2\test2.cpp(49): error     C2400: inline assembler syntax error in 'opcode'; found 'bad token'
1>c:\users\1337\documents\visual studio 2010\projects\test2\test2\test2.cpp(50): error     C2400: inline assembler syntax error in 'opcode'; found 'bad token'
1>c:\users\1337\documents\visual studio 2010\projects\test2\test2\test2.cpp(51): error     C2400: inline assembler syntax error in 'opcode'; found 'bad token'**strong text**

怎么了?

4

2 回答 2

2

您的语法有问题,请像这样使用它:-

 int _tmain(int argc, _TCHAR* argv[])
    {
      _asm{ 
           mov eax, DMSN[0]
           lea ebx, DMSN[0]
           call ebx
          }
        return 0;
    }

用于基于 VS 的编译器。

于 2012-08-14T09:56:41.590 回答
1

如果 dmsn 是数组,则不必输入 [0] 来访问第一个元素

int _tmain(int argc, _TCHAR* argv[])
{
    __asm{ 
           mov eax, DMSN
           lea ebx, DMSN
           call ebx
         };
    return 0;
}

mov 指令将自动检查操作数大小,并将前 32 位放入寄存器(eax),将 32 位有效地址放入寄存器(ebx)

VC++ 2010 速递

于 2012-08-14T11:24:59.607 回答