请帮忙,谢谢!
程序代码:
#include "stdafx.h" #include "SROLibrary.h" #include "SL_FORM.h" #include "afxdialogex.h" #include <string.h> #include <map> void SL_FORM::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 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下可以正常编译和执行,结果为:6231 (正确结果)
在VS2017下可以正常编译,但执行结果为:2147489984 并且函数执行完毕后程序崩溃。
在VS下,若注释如下3行代码则不会崩溃:
p = &b[0];
_strrev(p);
AfxMessageBox(p);
代码在VC6下执行正常,所以我觉得汇编部分可能没问题。
电脑上的VC6总是假死所以很不方便,但VS遇到的问题又解决不了,
请大家帮我看看这可能是什么原因?
请问rjsp大佬是否遇到过类似的问题,能不能教教我解决的思路,
实在是没办法,都不知道上网搜什么。。。
谢谢大家!