如果你是一个爱好者,那么win32汇编编程非常适合你。
刚开始学习编程,如果一开始就学习VC、C++等,会让自已学的非常糊涂,应该从简单的,基本的开始,侧重于原理的理解,那么,win32汇编就非常适合你。
它用来干什么都行,取决于你的能力。不管是数据库、网络、外挂、系统、驱动、病毒等等,都可以。
下面,我们开始从最简单的开始,先学会使用它的编程环境。给自已一点成就感,这很重要。
第1步,上网搜索,下载一个RadASM软件,它是集成的win32汇编环境,安装好它。我的电脑是64位的 windows 7 系统,以下示例都是在这电脑上形成的,其它系统或许会出错,可以多研究研究,默认安装就可以了。
第2步,安装好后,在桌面上,找到这个图标
,双击打开它。
第3步,点文件,点新建工程

第4步,在打开的窗口中找到工程名字和工程说明,分别输入想起的名字和说明,点下一步

第5步,点下一步

第6步,点下一步

第7步,点完成

第8步,找到右侧的ABC.Asm文件,双击打开它

第9点,把下面的内容复制进里面去;win32汇编环境,生成窗口程序的框架
;将代码复制进radasm软件里,直接编译运行就可以生成一个最简单的窗口程序
;要复制的代码开始
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.386
.model flat,stdcall
option casemap:none
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.DATA
ClassName db "SimpleWinClass",0
AppName db "窗口程序的模版",0
.DATA?
hInstance HINSTANCE ?
CommandLine LPSTR ?
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.CODE
start:
invoke GetModuleHandle, NULL
mov hInstance,eax
invoke GetCommandLine
mov CommandLine,eax
invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT
invoke ExitProcess, eax
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
LOCAL wc:WNDCLASSEX
LOCAL msg:MSG
LOCAL hwnd:HWND
mov wc.cbSize,SIZEOF WNDCLASSEX
mov wc.style, CS_HREDRAW or CS_VREDRAW
mov wc.lpfnWndProc, OFFSET WndProc
mov wc.cbClsExtra,NULL
mov wc.cbWndExtra,NULL
push hInstance
pop wc.hInstance
mov wc.hbrBackground,COLOR_WINDOW
mov wc.lpszMenuName,NULL
mov wc.lpszClassName,OFFSET ClassName
invoke LoadIcon,NULL,IDI_APPLICATION
mov wc.hIcon,eax
mov wc.hIconSm,eax
invoke LoadCursor,NULL,IDC_ARROW
mov wc.hCursor,eax
invoke RegisterClassEx, addr wc
invoke CreateWindowEx,NULL, ADDR ClassName,ADDR AppName,WS_OVERLAPPEDWINDOW,100,100,400,600, NULL,NULL,hInst, NULL
mov hwnd,eax
invoke ShowWindow, hwnd,CmdShow
invoke UpdateWindow, hwnd
.while TRUE
invoke GetMessage, ADDR msg,NULL,0,0
.break .if (!eax)
invoke TranslateMessage, ADDR msg
invoke DispatchMessage, ADDR msg
.endw
mov eax,msg.wParam
ret
WinMain endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.if uMsg==WM_DESTROY
invoke PostQuitMessage,NULL
.else
invoke DefWindowProc,hWnd,uMsg,wParam,lParam
ret
.endif
xor eax,eax
ret
WndProc endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end start
;要复制的代码结束
; include windows.inc ;这句是包含名为windows的头文件,这里非常容易出错,如果编译出错,请尝试填写文件的绝对路径,注意所包含的头文件在哪个盘哪个文件夹下
;比如写成 D:\RadASM\masm32\include\windows.inc
;每句注释前面用英语输入法下的冒号,即 ; 号,才可以在后面写注释,注意不要换行写。换行的话再写上 ;号再开始写注释
第10步,找到图中打红勾的地方,点一下

第11步,就会显示出你的第一个程序了,也是你写的第一个软件。下次打开RadASM,就是默认的这个程序,你可以继续完善它。从现在开始,你就是程序员了,或者叫软件工程师。


688

被折叠的 条评论
为什么被折叠?



