请教一个最简单的win32asm程序!
我从
http://www.csdn.net/develop/library/other/ASM/2108.shtm
处拷贝了一个创建windows窗口的程序。是win32的,
我不知道怎么编译运行这个win32的程序。各位大哥,能否指点一下步骤?
我copy的原程序在下:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.386
.model flat, stdcall
option casemap :none ; case sensitive
include windows.inc
include user32.inc
include kernel32.inc
include comctl32.inc
include comdlg32.inc
include gdi32.inc
includelib user32.lib
includelib kernel32.lib
includelib comctl32.lib
includelib comdlg32.lib
includelib gdi32.lib
idi_main equ 1000 ;icon
idm_main equ 4000 ;menu
idm_exit equ 4001
.data?
hinstance dd ?
hwinmain dd ?
hmenu dd ?
szbuffer db 256 dup (?)
.data
szclassname db "windows template",0
szcaptionmain db '窗口模板',0
.code
start:
call _winmain
invoke exitprocess,null
_winmain proc
local @stwcmain:wndclassex
local @stmsg:msg
invoke initcommoncontrols
invoke getmodulehandle,null
mov hinstance,eax
invoke loadicon,hinstance,idi_main
mov hicon,eax
invoke loadmenu,hinstance,idm_main
mov hmenu,eax
;*************** 注册窗口类 *****************************************
invoke loadcursor,0,idc_arrow
mov @stwcmain.hcursor,eax
mov @stwcmain.cbsize,sizeof wndclassex
mov @stwcmain.hiconsm,0
mov @stwcmain.style,cs_hredraw or cs_vredraw
mov @stwcmain.lpfnwndproc,offset wndmainproc
mov @stwcmain.cbclsextra,0
mov @stwcmain.cbwndextra,0
mov eax,hinstance
mov @stwcmain.hinstance,eax
mov @stwcmain.hicon,0
mov @stwcmain.hbrbackground,color_window + 1
mov @stwcmain.lpszclassname,offset szclassname
mov @stwcmain.lpszmenuname,0
invoke registerclassex,addr @stwcmain
;*************** 建立输出窗口 ***************************************
invoke createwindowex,ws_ex_clientedge,offset szclassname,offset szcaptionmain,ws_overlappedwindow or ws_vscroll or ws_hscroll,0,0,550,300,null,hmenu,hinstance,null
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
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
wndmainproc proc uses ebx edi esi, hwnd:dword,umsg:dword,wparam:dword,lparam:dword
mov eax,umsg
.if eax == wm_create
mov eax,hwnd
mov hwinmain,eax
call _init
;********************************************************************
.elseif eax == wm_command
.if lparam == 0
mov eax,wparam
.if ax == idm_exit
call _quit
.endif
.endif
;********************************************************************
.elseif eax == wm_close
call _quit
;********************************************************************
.else
invoke defwindowproc,hwnd,umsg,wparam,lparam
ret
.endif
xor eax,eax
ret
wndmainproc endp
_init proc
invoke sendmessage,hwinmain,wm_seticon,icon_small,hicon
ret
_init endp
;********************************************************************
_quit proc
invoke destroywindow,hwinmain
invoke postquitmessage,null
ret
_quit endp
;********************************************************************
end start
》》》》》》》》》》》》》》》》》》》》》》》》》》》
然后,我下载了masm32v5,到里面去编译,他提示说,
fatal error A1000: cannot open file : windows.inc
这是怎么回事?我对win32asm编程是一窍不通的,
请各位大哥多多帮忙!先谢了!