| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 938 人关注过本帖
标题:win32位汇编程序出错,望调试
取消只看楼主 加入收藏
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
结帖率:97.22%
收藏
已结贴  问题点数:100 回复次数:2 
win32位汇编程序出错,望调试
程序代码:
                    .386
                    .model flat,stdcall
                    option casemap:none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;  Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include    windows.inc
include    gdi32.inc
includelib gdi32.lib
include    user32.inc
includelib user32.lib
include    kernel32.inc
includelib kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;  数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                           .data?
hInstance                  dd        ?
hWinMain                   dd        ?

                           .const
szClassName                db        "MyClass",0
szCaption                  db        "My first Window !",0
szText                     db        "Win32 Assembly, Simpel and powerful !",0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;  代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                           .code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;  窗口过程
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcWinMain                proc      hWnd,uMsg,wParam,lParam
                            local     @stPs:PAINTSTRUCT
                            local     @stRect:RECT
                            local     @hDc
                           
                            mov       eax,uMsg
;***********************************************************************************************
                           .if        eax == WM_PAINT
                                      invoke    BeginPaint,hWnd,addr @stPs
                                      mov       @hDc,eax
                                      invoke    GetClientRect,@hDc,addr @stRect
                                      invoke    DrawText,@hDc,offset szText,-1,addr @stRect,\
                                      DT_SINGLELINE or DT_CENTER or DT_VCENTER
                           
                                      invoke    EndPaint,hWnd,addr @stPs
;***********************************************************************************************
                           
                           .elseif    eax == WM_CLOSE
                                      invoke    DestroyWindow,hWnd
                                      invoke    PostQuitMessage,NULL
;************************************************************************************************

                           .else
                                      invoke     DefWindowProc,hWnd,uMsg,wParam,lParam
                                      ret
                           .endif
;*************************************************************************************************
                             xor      eax,eax
                             ret
                            
_ProcWinMain   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.lpfnWndProc, offset _ProcWinMain
                            mov       @stWndClass.hbrBackground,COLOR_WINDOW + 1
                            mov       @stWndClass.lpszClassName, offset szClassName
                            invoke    RegisterClassEx,addr @stWndClass
;*************************************************************************************************
;  建立并显示窗口
;*************************************************************************************************
                            invoke    CreateWindowEx, WS_EX_CLIENTEDGE, offset szClassName,\
                                                      offset szCaption,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
运行后窗口过程中的WM_PAINT没有得到输出,求调试,此贴绝非水贴,除去打酱油的十到二十分外其余分一律给解题人(话说偶真的熬不住了,还要生地会考压力大,这种错误可能查找的时间不多,所以SOS啊...)
搜索更多相关主题的帖子: option 
2013-03-31 01:01
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:0 
求大牛......

I have not failed completely
2013-03-31 11:09
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:0 
回复 4楼 Agdmeg
找到错误了,thanks感谢,结贴料....
agdmeg你对32位汇编有点了解吗?我看的罗云兵的书但是有些地方不太详细啊
是不是得先看看其他书籍?

I have not failed completely
2013-03-31 13:25
快速回复:win32位汇编程序出错,望调试
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026683 second(s), 8 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved