char name[25];
int generated_int;
for(int i = 0; i<sizeof(name); i++)
{
name[i] = (char)0;
}
cout << "Name: ";
cin >> name;
int nameLen = strlen(name);
__asm
{
pusha;
mov esi, &name //I got error here, I cant use "&". How to move name address to esi?
mov ecx, nameLen
mov ebx, 45
start:
mov al, [esi]
and eax, 0xFF
mul ebx
inc esi
add edi, eax
inc ebx
dec ecx
jnz start
mov generated_serial, edi
popa
}
cout << endl << "Serial: " << generated_serial << endl << endl;我不知道如何在asm块中获取我的chay数组的地址。当我尝试使用"&“例如&name时,我在编译时遇到错误:
error C2400: inline assembler syntax error in 'second operand'; found 'AND'更新:
mov esi,name显示此编译错误: C2443:操作数大小冲突
更新2: lea工作得很好。
发布于 2011-05-18 20:32:48
您似乎在寻找lea指令,它将一些符号的有效地址加载到一个寄存器中。下面的指令将在esi中存储name的地址。
lea esi, name发布于 2011-05-18 20:09:05
name已经是(或者更确切地说是衰减为)一个指针。只需使用mov esi, name即可。
发布于 2011-05-18 20:32:57
move esi, name已经是名字的地址。如果您想要内容(名称),您可以使用
move esi, [name]https://stackoverflow.com/questions/6044392
复制相似问题