鱼C论坛

 找回密码
 立即注册
查看: 2279|回复: 2

这段代码不能编译请高手看看

[复制链接]
发表于 2013-1-26 04:26:33 | 显示全部楼层 |阅读模式
1鱼币
.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
szCaptionMain   db     'My first Window!',0
szText          db     'Win32 Assembly, Simple and powerful !'0
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; 代码段
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             .code
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;窗口过程
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
_ProcWinMain    proc   uses ebx edi esi,hWnd,uMsg,wParam,lParam
                local  @stPs:PAINTSTRUCT
                local  @stRect:RECT
                local  @hDc
                mov    eax,uMsg
;**************************************************************************
    .if    eax == WM_PAINT
                    inovke  BeginPaint,hWnd,addr @stPs
        mov     @hDc,eax
        
        
                 inovke  GetClientRect,hWnd,addr @stRect
                 inovke  DrawText,@hDc,addr szText,-1,\
                addr @stRect,\
          DT_SINGLELINE or DT_CENTER or DT_VCENTER
         
        inovke  EndPaint,hWnd,addr @stPs
;****************************************************************************
                .elseif  eax == WM_CLOSE
                       inovke  DestroyWindow,hWinMain
                       inovke  PostQuitMessage,NULL
;****************************************************************************
                .else         
                 inovke  DefWindowproc,hWnd,uMsg,wParam,lParam
        ret
    .endif
;****************************************************************************
                       xor  eax,eax
                       ret
_ProcWinMain    endp
;*****************************************************************************
_WinMain        proc
                local  @stWndClass:WNDCLASSEX
    local  @stMsg:MSG
   
   
    inovke GetModuleHandle,NULL
    mov    hInstance,eax
    inovke RtlZeroMemory,addr @stWndClass,sizeof @stWndClass
;******************************************************************************
;注册窗口类
;******************************************************************************
                innovke 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
    inovke RegisterClassEx,addr @stWndClass
;*******************************************************************************
;建立并显示窗口
;*******************************************************************************
               inovke  CreateWindowEx,WS_EX_CLIENTEDGE,\
                       offset szClassName,offset szCaptionMain,\
                       WS_OVERLAPPEDWINDOW,\
                       100,100,600,400,\
                       NULL,NULL,hInstance,NULL
               mov     hWinMain,eax
               inovke  ShowWindow,hWinMain,SW_SHOWNORMAL
               inovke  UpdateWindow,hWinMain
;*********************************************************************************
;消息循环
;*********************************************************************************
               .while  TRUE
                       inovke  GetMessage,addr @stMsg,NULL,0,0
                      .break  .if  eax == 0
                       inovke  TranslateMessage,addr @stMsg
                       inovke  DispatchMessage,addr @stMsg
               .endw
              ret
_WinMain      endp
;*********************************************************************************
start:
        call    _WinMain
        inovke  ExitProcess,NULL
;*********************************************************************************
        end     start

最佳答案

查看完整内容

好几行的invoke 打成inovke 我直接用编辑器的功能把所有inovke替换成invoke 好了,第一个错误解决 下一个错误 56行 不是DefWindowproc 而是DefWindowProc 大小写下次注意点哦。 接下来75行 invoke打成innovke。。 改掉 接下来 25行 szText db 'Win32 Assembly, Simple and powerful !'0 少了个逗号 改成 szText db 'Win32 Assembly, Simple and powerful !',0 好了搞定 以下 ...
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-26 04:26:34 | 显示全部楼层
本帖最后由 メ㊣逆ご帅☆ 于 2013-1-26 16:16 编辑

好几行的invoke 打成inovke
我直接用编辑器的功能把所有inovke替换成invoke
好了,第一个错误解决
下一个错误
56行
不是DefWindowproc
而是DefWindowProc
大小写下次注意点哦。


接下来75行
invoke打成innovke。。
改掉

接下来
25行
szText          db     'Win32 Assembly, Simple and powerful !'0
少了个逗号
改成
szText          db     'Win32 Assembly, Simple and powerful !',0

好了搞定
以下是编译提示(可以无视):
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:\Documents and Settings\Administrator>d:
D:\>cd masm32
D:\masm32>var.bat
D:\masm32>cd ns
D:\masm32\NS>cd alltest
D:\masm32\NS\alltest>nmake
Microsoft (R) Program Maintenance Utility   Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.
        ml /c /coff smc.asm
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997.  All rights reserved.
Assembling: smc.asm
smc.asm(40) : error A2008: syntax error : inovke
smc.asm(44) : error A2008: syntax error : inovke
smc.asm(45) : error A2008: syntax error : DrawTextA
smc.asm(49) : error A2008: syntax error : inovke
smc.asm(52) : error A2008: syntax error : inovke
smc.asm(53) : error A2008: syntax error : inovke
smc.asm(56) : error A2008: syntax error : inovke
smc.asm(69) : error A2008: syntax error : inovke
smc.asm(71) : error A2008: syntax error : RtlZeroMemory
smc.asm(75) : error A2008: syntax error : innovke
smc.asm(84) : error A2008: syntax error : inovke
smc.asm(88) : error A2008: syntax error : CreateWindowExA
smc.asm(94) : error A2008: syntax error : inovke
smc.asm(95) : error A2008: syntax error : inovke
smc.asm(100) : error A2008: syntax error : inovke
smc.asm(102) : error A2008: syntax error : inovke
smc.asm(103) : error A2008: syntax error : inovke
smc.asm(110) : error A2008: syntax error : inovke
smc.asm(25) : error A2206: missing operator in expression
NMAKE : fatal error U1077: 'ml' : return code '0x1'
Stop.
D:\masm32\NS\alltest>nmake
Microsoft (R) Program Maintenance Utility   Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.
        ml /c /coff smc.asm
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997.  All rights reserved.
Assembling: smc.asm
smc.asm(56) : error A2006: undefined symbol : DefWindowproc
smc.asm(75) : error A2008: syntax error : innovke
smc.asm(25) : error A2206: missing operator in expression
NMAKE : fatal error U1077: 'ml' : return code '0x1'
Stop.
D:\masm32\NS\alltest>nmake
Microsoft (R) Program Maintenance Utility   Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.
        ml /c /coff smc.asm
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997.  All rights reserved.
Assembling: smc.asm
smc.asm(56) : error A2006: undefined symbol : DefWindowproc
smc.asm(75) : error A2008: syntax error : innovke
smc.asm(25) : error A2206: missing operator in expression
NMAKE : fatal error U1077: 'ml' : return code '0x1'
Stop.
D:\masm32\NS\alltest>nmake
Microsoft (R) Program Maintenance Utility   Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.
        ml /c /coff smc.asm
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997.  All rights reserved.
Assembling: smc.asm
smc.asm(75) : error A2008: syntax error : innovke
smc.asm(25) : error A2206: missing operator in expression
NMAKE : fatal error U1077: 'ml' : return code '0x1'
Stop.
D:\masm32\NS\alltest>nmake
Microsoft (R) Program Maintenance Utility   Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.
        ml /c /coff smc.asm
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997.  All rights reserved.
Assembling: smc.asm
smc.asm(25) : error A2206: missing operator in expression
NMAKE : fatal error U1077: 'ml' : return code '0x1'
Stop.
D:\masm32\NS\alltest>nmake
Microsoft (R) Program Maintenance Utility   Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.
        ml /c /coff smc.asm
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997.  All rights reserved.
Assembling: smc.asm
        Link /subsystem:windows /section:.text,RWE smc.obj
Microsoft (R) Incremental Linker Version 5.12.8078
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.



细节问题。
下次看编译错误提示,一般都是简单的英语
看不懂百度翻译下,下次你就懂了。

如果不想直接看视频中的代码也可以找到错误的,
下次细心。

最后是完整修改后代码




  1. .386
  2. .model flat,stdcall
  3. option casemap:none
  4. ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  5. ; Include 文件定义
  6. ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  7. include windows.inc
  8. include gdi32.inc
  9. includelib gdi32.lib
  10. include user32.inc
  11. includelib user32.lib
  12. include kernel32.inc
  13. includelib kernel32.lib
  14. ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  15. ;数据段
  16. ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  17. .data?
  18. hInstance dd ?
  19. hWinMain dd ?


  20. .const
  21. szClassName db 'MyClass',0
  22. szCaptionMain db 'My first Window!',0
  23. szText db 'Win32 Assembly, Simple and powerful !',0
  24. ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  25. ; 代码段
  26. ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  27. .code
  28. ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  29. ;窗口过程
  30. ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  31. _ProcWinMain proc uses ebx edi esi,hWnd,uMsg,wParam,lParam
  32. local @stPs:PAINTSTRUCT
  33. local @stRect:RECT
  34. local @hDc
  35. mov eax,uMsg
  36. ;**************************************************************************
  37. .if eax == WM_PAINT
  38. invoke BeginPaint,hWnd,addr @stPs
  39. mov @hDc,eax


  40. invoke GetClientRect,hWnd,addr @stRect
  41. invoke DrawText,@hDc,addr szText,-1,\
  42. addr @stRect,\
  43. DT_SINGLELINE or DT_CENTER or DT_VCENTER

  44. invoke EndPaint,hWnd,addr @stPs
  45. ;****************************************************************************
  46. .elseif eax == WM_CLOSE
  47. invoke DestroyWindow,hWinMain
  48. invoke PostQuitMessage,NULL
  49. ;****************************************************************************
  50. .else
  51. invoke DefWindowProc,hWnd,uMsg,wParam,lParam
  52. ret
  53. .endif
  54. ;****************************************************************************
  55. xor eax,eax
  56. ret
  57. _ProcWinMain endp
  58. ;*****************************************************************************
  59. _WinMain proc
  60. local @stWndClass:WNDCLASSEX
  61. local @stMsg:MSG


  62. invoke GetModuleHandle,NULL
  63. mov hInstance,eax
  64. invoke RtlZeroMemory,addr @stWndClass,sizeof @stWndClass
  65. ;******************************************************************************
  66. ;注册窗口类
  67. ;******************************************************************************
  68. invoke LoadCursor,0,IDC_ARROW
  69. mov @stWndClass.hCursor,eax
  70. push hInstance
  71. pop @stWndClass.hInstance
  72. mov @stWndClass.cbSize,sizeof WNDCLASSEX
  73. mov @stWndClass.style,CS_HREDRAW or CS_VREDRAW
  74. mov @stWndClass.lpfnWndProc,offset _ProcWinMain
  75. mov @stWndClass.hbrBackground,COLOR_WINDOW + 1
  76. mov @stWndClass.lpszClassName,offset szClassName
  77. invoke RegisterClassEx,addr @stWndClass
  78. ;*******************************************************************************
  79. ;建立并显示窗口
  80. ;*******************************************************************************
  81. invoke CreateWindowEx,WS_EX_CLIENTEDGE,\
  82. offset szClassName,offset szCaptionMain,\
  83. WS_OVERLAPPEDWINDOW,\
  84. 100,100,600,400,\
  85. NULL,NULL,hInstance,NULL
  86. mov hWinMain,eax
  87. invoke ShowWindow,hWinMain,SW_SHOWNORMAL
  88. invoke UpdateWindow,hWinMain
  89. ;*********************************************************************************
  90. ;消息循环
  91. ;*********************************************************************************
  92. .while TRUE
  93. invoke GetMessage,addr @stMsg,NULL,0,0
  94. .break .if eax == 0
  95. invoke TranslateMessage,addr @stMsg
  96. invoke DispatchMessage,addr @stMsg
  97. .endw
  98. ret
  99. _WinMain endp
  100. ;*********************************************************************************
  101. start:
  102. call _WinMain
  103. invoke ExitProcess,NULL
  104. ;*********************************************************************************
  105. end start
复制代码
最后下次代码还是用回复功能的添加代码功能来放代码比较好
不然  :反和谐P   和fishc论坛的表情有冲突的。

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +5 收起 理由
s0512 + 5 + 5 + 5 热爱鱼C^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-1-26 17:32:03 | 显示全部楼层
谢谢  非常的感谢   
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-2 15:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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