int addr;
char *p = NULL;
char b[5]={0};
int k; _asm
{
mov eax, 0xEEF5EC
mov eax, [eax]
add eax, 0x80
fld [eax]
mov ecx, 0xDA0ED8
fdiv [ecx]
mov eax, 0xB42D10
call eax
mov ebx, eax
mov edi, 0xa8
lea ecx, [edi + edi*2 - 0x195]
shl ecx, 6
sub ecx, ebx
mov eax, ecx
mov addr, eax
xor edi, edi
} while (TRUE)
{
_asm
{
xor edx, edx
mov eax, addr
mov ebx, eax
mov ecx, 0xa
div ecx
mov addr, eax
mul ecx
sub eax, ebx
neg eax
mov ecx, eax
add ecx, 0x30
lea esi, b
mov[esi + edi], ecx
inc edi
mov edx, 0
mov ebx, edx
mov eax, addr
or eax, ebx
mov k, eax
} if (k == 0)
break;
} p = &b[0];
_strrev(p);
AfxMessageBox(p);VC6.0下,可正确执行并得到正确结果
VS2017,程序崩溃,并且得到的结果错误
VS下编译无错、无警告。
VS下注释如下3句则不会崩溃:
p = &b[0];
_strrev(p);
AfxMessageBox(p);汇编代码确认无误。
请大家帮帮我,谢谢。