Win32汇编学习笔记(二)

模仿win32Hello,World程序:

Win32汇编学习笔记(二).386
Win32汇编学习笔记(二).modelflat,stdcall
Win32汇编学习笔记(二)option
casemap:none
Win32汇编学习笔记(二)
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Win32汇编学习笔记(二);
Include文件定义
Win32汇编学习笔记(二);
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Win32汇编学习笔记(二)
includewindows.inc
Win32汇编学习笔记(二)includegdi32.
inc
Win32汇编学习笔记(二)includelibgdi32.lib
Win32汇编学习笔记(二)includeuser32.
inc
Win32汇编学习笔记(二)includelibuser32.lib
Win32汇编学习笔记(二)includekernel32.
inc
Win32汇编学习笔记(二)includelibkernel32.lib
Win32汇编学习笔记(二)
Win32汇编学习笔记(二)
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Win32汇编学习笔记(二);
数据段
Win32汇编学习笔记(二);
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Win32汇编学习笔记(二)
.data?
Win32汇编学习笔记(二)hInstancedd?
;应用程序句柄
Win32汇编学习笔记(二)
hWinMaindd?;窗口句柄
Win32汇编学习笔记(二)

Win32汇编学习笔记(二).const
Win32汇编学习笔记(二)szClassNamedb
'MyClass',0;窗口类名称
Win32汇编学习笔记(二)
szCaptionMaindb'MyfirstWindow!',0;窗口标题
Win32汇编学习笔记(二)
szTextdb'Hello,Win32Assembly!!',0;要显示的信息
Win32汇编学习笔记(二)
szButtondb'button',0
Win32汇编学习笔记(二)szButtonTextdb
'点我吧!!',0
Win32汇编学习笔记(二)szMsgTitledb
'信息',0
Win32汇编学习笔记(二)szErrorMsgdb
'出错啦!!',0
Win32汇编学习笔记(二)
Win32汇编学习笔记(二)
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Win32汇编学习笔记(二);
代码段
Win32汇编学习笔记(二);
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Win32汇编学习笔记(二)
.code
Win32汇编学习笔记(二)
Win32汇编学习笔记(二)
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Win32汇编学习笔记(二);
出错处理过程
Win32汇编学习笔记(二);
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Win32汇编学习笔记(二)
_ErrorProcproc
Win32汇编学习笔记(二)invokeMessageBox,NULL,offsetszErrorMsg,offsetszMsgTitle,MB_OK
Win32汇编学习笔记(二)
ret
Win32汇编学习笔记(二)_ErrorProcendp
Win32汇编学习笔记(二)
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Win32汇编学习笔记(二);
窗口过程
Win32汇编学习笔记(二);
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Win32汇编学习笔记(二)
_ProcWinMainprocusesebxediesihWnd,uMsg,wParam,lParam;让汇编器保持子程序中使用到的寄存器的正确性
Win32汇编学习笔记(二)
local@stPs:PAINTSTRUCT
Win32汇编学习笔记(二)local
@stRect:RECT
Win32汇编学习笔记(二)[email protected]
Win32汇编学习笔记(二)
Win32汇编学习笔记(二)
moveax,uMsg
Win32汇编学习笔记(二)
;********************************************************************
Win32汇编学习笔记(二)
.ifeax==WM_CREATE
Win32汇编学习笔记(二)invokeCreateWindowEx,NULL,offsetszButton,offsetszButtonText,/
Win32汇编学习笔记(二)WS_CHILD
orWS_VISIBLE,100,100,65,50,hWnd,1,hInstance,NULL
Win32汇编学习笔记(二)
;********************************************************************
Win32汇编学习笔记(二)
.elseifeax==WM_PAINT
Win32汇编学习笔记(二)invokeBeginPaint,hWnd,[email protected]
Win32汇编学习笔记(二)
mov@hDc,eax
Win32汇编学习笔记(二)
Win32汇编学习笔记(二)invokeGetClientRect,hWnd,[email protected]
Win32汇编学习笔记(二)invokeDrawText,@hDc,addrszText,-
1,/;长度设置为-1,表示输出的字符串以'/0'结尾,且由函数自动计算出其长度
Win32汇编学习笔记(二)
[email protected],/
Win32汇编学习笔记(二)DT_SINGLELINE
orDT_CENTERorDT_VCENTER
Win32汇编学习笔记(二)
Win32汇编学习笔记(二)invokeEndPaint,hWnd,[email protected]
Win32汇编学习笔记(二)
;********************************************************************
Win32汇编学习笔记(二)
.elseifeax==WM_COMMAND
Win32汇编学习笔记(二)invokeMessageBox,NULL,offsetszText,offsetszMsgTitle,MB_OK
Win32汇编学习笔记(二)
;********************************************************************
Win32汇编学习笔记(二)
.elseifeax==WM_CLOSE
Win32汇编学习笔记(二)invokeDestroyWindow,hWinMain
Win32汇编学习笔记(二)invokePostQuitMessage,NULL
Win32汇编学习笔记(二)
;********************************************************************
Win32汇编学习笔记(二)
.else
Win32汇编学习笔记(二)invokeDefWindowProc,hWnd,uMsg,wParam,lParam
Win32汇编学习笔记(二)
ret
Win32汇编学习笔记(二).endif
Win32汇编学习笔记(二)
;********************************************************************
Win32汇编学习笔记(二)
xoreax,eax;eax寄存器清零
Win32汇编学习笔记(二)
ret
Win32汇编学习笔记(二)
Win32汇编学习笔记(二)_ProcWinMainendp
Win32汇编学习笔记(二)
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Win32汇编学习笔记(二);
WinMain函数
Win32汇编学习笔记(二);
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Win32汇编学习笔记(二)

Win32汇编学习笔记(二)_WinMainproc
Win32汇编学习笔记(二)local
@stWndClass:WNDCLASSEX
Win32汇编学习笔记(二)local
@stMsg:MSG
Win32汇编学习笔记(二)
Win32汇编学习笔记(二)invokeGetModuleHandle,NULL
;获取应用程序句柄,这在VC里是通过操作系统传递进来的,但是汇编中需要自己去获取
Win32汇编学习笔记(二)
movhInstance,eax;获取到的应用程序句柄在eax中
Win32汇编学习笔记(二)
invokeRtlZeroMemory,[email protected],[email protected];清零
Win32汇编学习笔记(二);
********************************************************************
Win32汇编学习笔记(二);
注册窗口类
Win32汇编学习笔记(二);
********************************************************************
Win32汇编学习笔记(二)
invokeLoadCursor,0,IDC_ARROW;加载光标
Win32汇编学习笔记(二)
mov@stWndClass.hCursor,eax
Win32汇编学习笔记(二)
pushhInstance
Win32汇编学习笔记(二)
pop@stWndClass.hInstance
Win32汇编学习笔记(二)
mov@stWndClass.cbSize,sizeofWNDCLASSEX
Win32汇编学习笔记(二)
mov@stWndClass.style,CS_HREDRAWorCS_VREDRAW
Win32汇编学习笔记(二)
Win32汇编学习笔记(二)
mov@stWndClass.lpfnWndProc,offset_ProcWinMain;设置窗口处理函数
Win32汇编学习笔记(二)
;invokeGetStockObject,WHITE_BRUSH
Win32汇编学习笔记(二)
;[email protected],eax
Win32汇编学习笔记(二)
mov@stWndClass.hbrBackground,COLOR_WINDOW+1
Win32汇编学习笔记(二)
mov@stWndClass.lpszClassName,offsetszClassName
Win32汇编学习笔记(二)invokeRegisterClassEx,[email protected]
;注册窗口类
Win32汇编学习笔记(二);
********************************************************************
Win32汇编学习笔记(二);
建立并显示窗口
Win32汇编学习笔记(二);
********************************************************************
Win32汇编学习笔记(二)
invokeCreateWindowEx,WS_EX_CLIENTEDGE,offsetszClassName,offsetszCaptionMain,/
Win32汇编学习笔记(二)WS_OVERLAPPEDWINDOW,/
Win32汇编学习笔记(二)
100,100,600,400,/
Win32汇编学习笔记(二)NULL,NULL,hInstance,NULL
;创建窗口,发出一个WM_CREATE消息
Win32汇编学习笔记(二)
movhWinMain,eax;保存窗口句柄
Win32汇编学习笔记(二)
invokeShowWindow,hWinMain,SW_SHOWNORMAL;显示窗口
Win32汇编学习笔记(二)
invokeUpdateWindow,hWinMain;发出一个WM_PAINT消息
Win32汇编学习笔记(二);
********************************************************************
Win32汇编学习笔记(二);
第一种消息循环,使用GetMessage,同步的
Win32汇编学习笔记(二);
********************************************************************
Win32汇编学习笔记(二)
;.whileTRUE
Win32汇编学习笔记(二)
;invokeGetMessage,[email protected],NULL,0,0
Win32汇编学习笔记(二)
;.break.ifeax==0;stMsg为0,即收到WM_QUIT消息时退出
Win32汇编学习笔记(二)
;invokeTranslateMessage,[email protected]
Win32汇编学习笔记(二)
;invokeDispatchMessage,[email protected]
Win32汇编学习笔记(二)
;.endw
Win32汇编学习笔记(二);
********************************************************************
Win32汇编学习笔记(二);
另一种消息循环,使用PeekMessage,异步的
Win32汇编学习笔记(二);
********************************************************************
Win32汇编学习笔记(二)
.whileTRUE
Win32汇编学习笔记(二)invokePeekMessage,[email protected],NULL,
0,0,PM_REMOVE
Win32汇编学习笔记(二).ifeax!=
0
Win32汇编学习笔记(二)[email protected]==WM_QUIT
Win32汇编学习笔记(二)invokeTranslateMessage,[email protected]
Win32汇编学习笔记(二)invokeDispatchMessage,[email protected]
Win32汇编学习笔记(二).else
Win32汇编学习笔记(二)
;空闲时间,可以做其他处理工作
Win32汇编学习笔记(二)
.endif
Win32汇编学习笔记(二).endw
Win32汇编学习笔记(二)
ret
Win32汇编学习笔记(二)_WinMainendp
Win32汇编学习笔记(二)
Win32汇编学习笔记(二)
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Win32汇编学习笔记(二);
程序入口点
Win32汇编学习笔记(二);
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Win32汇编学习笔记(二)
start:
Win32汇编学习笔记(二)
call_WinMain
Win32汇编学习笔记(二)invokeExitProcess,NULL
Win32汇编学习笔记(二)
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Win32汇编学习笔记(二)
endstart
Win32汇编学习笔记(二)
Win32汇编学习笔记(二)
Win32汇编学习笔记(二)

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

运行结果:


Win32汇编学习笔记(二)