我正在构建一个没有任何宏的
Windows程序集程序.所以我下载了一个使用宏的程序,我将其转换为“纯”汇编代码.
但是我在这里面临一个问题.有一个标签@@:我不明白,也是一个跳跃的@F,我没有得到它.这两个符号是什么?
MyWndProc: push ebp mov ebp,esp cmp DWORD PTR [ebp+12],2 ;WM_DESTROY=2 jne @F push ecx push NULL mov dword ptr ecx,7e42ca5ah ;address of PostQuitMessage call ecx pop ecx @@: push DWORD PTR [ebp+20] push DWORD PTR [ebp+16] push DWORD PTR [ebp+12] push DWORD PTR [ebp+8] call DefWindowProc ;mov dword ptr edx,7e42c17eh ;call edx leave ret 16
同样对于PostQuitMessage API,我可以对内存地址进行硬编码(在WinXP 32bits SP3上),但对于DefWindowProc,它会编译,但在执行时会中断.有人知道为什么吗?
谢谢你们的支持.
PS.:我正在使用masm32