我使用以下代码:
int _tmain(int argc, _TCHAR* argv[])
{
__asm{
"MOV EAX, DMSN[0]";
"LEA EBX, DMSN[0]";
"CALL EBX";
};
return 0;
}
MOV EAX
和LEA 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**
有什么问题?
答案 0 :(得分:2)
您的语法有问题,请按照以下方式使用: -
int _tmain(int argc, _TCHAR* argv[])
{
_asm{
mov eax, DMSN[0]
lea ebx, DMSN[0]
call ebx
}
return 0;
}
用于基于VS的编译器。
答案 1 :(得分: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 express