鱼C论坛

 找回密码
 立即注册
查看: 3695|回复: 3

[汇编作业] 为什么是undefined symbol:lparam

[复制链接]
发表于 2014-3-12 14:53:39 | 显示全部楼层 |阅读模式
1鱼币
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
            .386
                        .model flat,stdcall
                        option casemap:none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                        ;Indicate the instruction set
                        ;on the right in
                        ;Case sensitive
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;Include
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include     windows.inc
include     gdi32.inc
includelib  gdi32.lib
include     user32.inc
includelib  user32.lib
include     kernel32.inc
includelib  kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;data segment
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                        .data?
hInstance       dd       ?
hWinMain        dd       ?
szBuffer        db       512 dup(?)            

            .const
szClassName     db       'just begin',0
szCaptionMain   db             'Receive Message',0



szReceive        db        'Receive WM_COPYDATA message',0dh,0ah
                db        'length: %08x',0dh,0ah
                db        'text address: %08x',0dh,0ah
                db        'text: "%s"',0dh,0ah,0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;data segment
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
            .code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;process
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_Process    proc   uses ebx edi esi hWnd,uMsg,wParam,lParam                                                                                                         


        mov eax,uMsg
;*******************************************************************

;*******************************************************************
         .if eax == WM_CLOSE
             invoke  DestroyWindow,hWinMain
             invoke  PostQuitMessage,NULL
;*******************************************************************
         .elseif eax == WM_COPYDATA
                    mov eax,lparam
                        assume   eax:ptr COPYDATASTRUCT
                        invoke   wsprintf,addr szBuffer,addr szReceive,\
                           [eax].cbData,[eax].lpData,[eax].lpData
                        invoke MessageBox,hWnd,offset szBuffer,addr szCaptionMain,MB_OK
                        assume eax:nothing
         .else
             invoke  DefWindowProc,hWnd,uMsg,wParam,lParam
             ret
         .endif
;*******************************************************************
         xor eax,eax
         ret
_Process       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 _Process
        mov @stWndClass.hbrBackground,COLOR_WINDOW+1
        mov @stWndClass.lpszClassName,offset szClassName
        invoke RegisterClassEx,addr @stWndClass       
;***************************************************************
;create window
;***************************************************************               
                invoke    CreateWindowEx,WS_EX_CLIENTEDGE,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
;***************************************************************
;message loop
;***************************************************************
        .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               
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-3-12 14:54:44 | 显示全部楼层
QQ截图20140312145524.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-12 22:28:24 | 显示全部楼层
提示的是 57行出错,出错的是lparam,,粗看了一下,是你打错了大小写 正确的是lParam  ,大写P
其实应该标记下出错位置,一般人看到没注释的全代码,都懒得细看的。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-12 22:39:46 | 显示全部楼层
楼主不会是用记事本写的吧。。初学汇编,建议还是用RadASM,因为刚学,很容易写错代码,刚学本来就迷茫,编译连接出错有时半天找不出哪里错了,用有语法高亮,出错定位的开发环境,可以减少这类问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 00:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表