当前位置: 代码迷 >> 汇编语言 >> WIN32ASM一个程序运行不了解决方案
  详细解决方案

WIN32ASM一个程序运行不了解决方案

热度:7705   发布时间:2013-02-26 00:00:00.0
WIN32ASM一个程序运行不了
在WIN7的环境下运行不了。兼容模式也弄了。菜鸟不懂什么原因。
Assembly code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>        .386        .model    flat,stdcall        option    casemap:none;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;equ 值定义APP_ICON EQU 1200;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;include文件定义;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>include        windows.incinclude        kernel32.incinclude        user32.incinclude        gdi32.incincludelib    kernel32.libincludelib    user32.libincludelib    gdi32.lib;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;数据段;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>            .data?hInstance    dd        ?hWinMain        dd        ?hEdit            dd        ?            .constszClassName        db    'MyTextClass',0szCaptionMain    db    'MyTextClass~',0szEditClass        db    'edit',0;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;代码段;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>        .code;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;窗口过程;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>_ProcMain    proc    hWnd,uMsg,wParam,lParam                    pushad                mov    eax,uMsg                                .if    eax ==    WM_CREATE                                        invoke LoadIcon, hInstance, APP_ICON                                    invoke SendMessage, hWnd, WM_SETICON, ICON_BIG, eax                    ;创建文本编辑框                    invoke    CreateWindowEx,WS_EX_CLIENTEDGE,offset szEditClass,NULL,WS_CHILDWINDOW or WS_VISIBLE or WS_VSCROLL or WS_HSCROLL,0,0,500,500,hWnd,NULL,hInstance,NULL                    mov    hEdit,eax                .elseif    eax ==    WM_DESTROY                    invoke    DestroyWindow,hWinMain                                    .elseif    eax ==    WM_CLOSE                    invoke    PostQuitMessage,NULL                .else                    invoke    DefWindowProc,hWnd,uMsg,wParam,lParam                    ret                .endif                                xor eax,eax                popad                ret_ProcMain endp;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>_WinMain    proc            LOCAL    @stWndClass:WNDCLASSEX        LOCAL    @stMsg:MSG                        invoke    GetModuleHandle,NULL        mov        hInstance,eax        invoke    RtlZeroMemory,addr @stWndClass,sizeof    @stWndClass;******************************************************************;注册窗口类;******************************************************************        invoke    LoadCursor,0,IDC_ARROW        mov    @stWndClass.hCursor,eax        push    hInstance        pop    @stWndClass.hInstance        mov    @stWndClass.cbSize,sizeof    WNDCLASSEX        mov    @stWndClass.style,CS_HREDRAW or    CS_VREDRAW         mov    @stWndClass.cbClsExtra,NULL        mov    @stWndClass.cbWndExtra,NULL                mov    @stWndClass.hbrBackground,COLOR_WINDOW + 1        mov    @stWndClass.lpszMenuName,NULL        mov    @stWndClass.lpszClassName,offset szClassName                invoke    LoadIcon,NULL,APP_ICON        mov    @stWndClass.hIcon,eax        mov    @stWndClass.hIconSm,eax                invoke    RegisterClassEx,addr @stWndClass;******************************************************************;建立现实窗口;******************************************************************        invoke    CreateWindowEx,NULL,\                    offset szClassName,offset szCaptionMain,\                    WS_OVERLAPPEDWINDOW,\                    100,100,600,400,\                    NULL,NULL,hInstance,NULL        mov        hWinMain,eax        invoke    ShowWindow,hWinMain,SW_SHOWNORMAL        invoke    UpdateWindow,hWinMain        ;******************************************************************;消息循环;******************************************************************        .while    TRUE                    invoke    GetMessage,addr @stMsg,NULL,0,0                    .break    .if    eax==0                    invoke    TranslateMessage,addr @stMsg                    invoke    DispatchMessage,addr @stMsg        .endw                        ret_WinMain endp;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>start:                call        _WinMain                invoke    ExitProcess,NULL;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>end    start
  相关解决方案