Win32 汇编语句模板

Win32 汇编语句模板

 

 

 

一 变量

 

 

 

 
;句柄
hInstance     dd 0
hWnd          dd 0
hPen          dd 0
hPend        dd 0
oldPen        dd 0

;过程变量
hInst     :DWORD
hPrevInst :DWORD
hWin:DWORD
hDC:DWORD
hParent:DWORD
hCtl   :DWORD

CmdLine   :DWORD
CmdShow   :DWORD
uMsg   :DWORD
wParam :DWORD
lParam :DWORD

a:DWORD
ht:DWORD
ID:DWORD

;本地
LOCAL hDC:DWORD
LOCAL mDC       :DWORD
LOCAL hBrush    :DWORD
LOCAL hOldBmp   :DWORD
LOCAL hReturn   :DWORD
LOCAL hOldBrush :DWORD
LOCAL btn_hi   :DWORD
LOCAL btn_lo   :DWORD

LOCAL rct:RECT
LOCAL ps:PAINTSTRUCT
LOCAL wc   :WNDCLASSEX
LOCAL msg  :MSG

LOCAL Wtx  :DWORD
LOCAL var    :DWORD

LOCAL buffer1[128]:BYTE  ; these are two spare buffers
LOCAL buffer2[128]:BYTE  ; for text manipulation etc..

;自定义文本
szText szClassName,"bmbtn_Class"
szText icoMsg1,"Single Icon Button"
szText icoBtnCl,"BUTTON"
szText blnk1,0
szText bmpBtnCl,"BUTTON"
szText bmpMsg1,"Single Bitmap Button"
 

二 Mov

;句柄mov
mov hInstance,eax
mov  hWnd,eax
mov hDC,eax
mov hPen,eax
mov oldPen,eax
mov hIcon, eax

mov hBtn1, eax
mov lpBtnProc, eax
mov hBmp1, eax
mov lpfnbmpProc, eax
mov mDC,eax

mov hOldBrush,eax
mov hReturn,eax
mov hBrush,eax
mov hOldBmp,eax  

mov eax,hReturn

;mov到结构体
mov wc.hIcon,eax
mov wc.hCursor,        eax
mov wc.cbSize,         sizeof WNDCLASSEX
mov wc.style,          CS_HREDRAW or CS_VREDRAW \
                             or CS_BYTEALIGNWINDOW
mov wc.lpfnWndProc,    offset WndProc
mov wc.cbClsExtra,     NULL
mov wc.cbWndExtra,     NULL
mov wc.hInstance,      hInst
mov wc.hbrBackground,  COLOR_BTNFACE+1
mov wc.lpszMenuName,   NULL
mov wc.lpszClassName,  offset szClassName

;变量mov
mov eax, wDim
mov Wtx, eax
mov Wwd, 250
mov Wht, 150
mov CommandLine, eax
 

三 条件语句

;if语句
.if uMsg == WM_COMMAND
.if uMsg == WM_KEYDOWN
.if wParam == 400

;elseif语句
.elseif uMsg == WM_CREATE
.elseif uMsg == WM_PAINT
.elseif uMsg == WM_SIZE
.elseif uMsg == WM_CLOSE
.elseif uMsg == WM_DESTROY
.elseif uMsg == WM_KEYUP
.elseif uMsg == WM_LBUTTONDOWN
.elseif uMsg == WM_LBUTTONUP

.elseif wParam == 401

.endif
 

四 汇编指令

.386
.code
.model flat, stdcall  ; 32 bit memory model
option casemap :none  ; case sensitive

return 0 
return sDim
return msg.wParam

shr sDim, 1
shr wDim, 1
sub sDim, eax 

jmp StartLoop
je ExitLoop

cmp eax,0
xor eax,eax

proc
ret	
endp
end start
 

五 调用Win32 API

;模块和进程
invoke GetModuleHandle,0
invoke GetModuleHandle, NULL
invoke ExitProcess,eax
invoke GetCommandLine

;窗口
invoke WinMain,hInstance,0,0,SW_SHOWDEFAULT
invoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT
invoke ShowWindow,hWnd,SW_SHOWNORMAL
invoke UpdateWindow,hWnd
invoke SetWindowLong,hBtn2,GWL_WNDPROC,BtnProc
invoke SetWindowLong,hBtn4,GWL_WNDPROC,bmpProc
invoke SetWindowExtEx,hDC,100,100,0
invoke DefWindowProc,hWin,uMsg,wParam,lParam
invoke RegisterClassEx, ADDR wc
invoke CallWindowProc,lpfnbmpProc,hCtl,uMsg,wParam,lParam
invoke CallWindowProc,lpBtnProc,hCtl,uMsg,wParam,lParam
invoke MessageBox,hWin,ADDR icoMsg1,  ADDR szDisplayName,MB_OK
invoke MessageBox,hWin,ADDR bmpMsg1,  ADDR szDisplayName,MB_OK

invoke CreateWindowEx,WS_EX_LEFT,
                      ADDR szClassName,
                      ADDR szDisplayName,
                      WS_OVERLAPPED or WS_SYSMENU,
                      Wtx,Wty,Wwd,Wht,
                      NULL,NULL,
                      hInst,NULL

invoke CreateWindowEx,0,
        ADDR icoBtnCl,ADDR blnk1,
        WS_CHILD or WS_VISIBLE or BS_ICON,
        a,b,wd,ht,hParent,ID,
        hInstance,NULL
    
;图标,位图,光标,菜单
invoke LoadIcon,hInst,500
invoke LoadIcon,hInstance,2
invoke LoadCursor,0,IDC_ARROW
invoke LoadCursor,NULL,IDC_ARROW
invoke LoadBitmap,hInstance,10
invoke LoadMenu,hInst,600  ; menu ID
invoke SetMenu,hWnd,eax

;系统信息和度量
invoke GetSystemMetrics,SM_CXSCREEN
invoke GetSystemMetrics,SM_CYSCREEN
invoke GetSysColor,COLOR_BTNHIGHLIGHT
invoke GetSysColor,COLOR_BTNSHADOW
invoke GetSysColor,COLOR_BTNFACE
invoke SetMapMode,hDC,MM_ANISOTROPIC
  
;消息
invoke GetMessage,ADDR msg,0,0,0
invoke GetMessage,ADDR msg,NULL,0,0
invoke TranslateMessage,ADDR msg
invoke DispatchMessage,ADDR msg
invoke SendMessage,hBtn1,BM_SETIMAGE,1,eax
invoke SendMessage,hBtn3,BM_SETIMAGE,0,hBmp1
invoke PostQuitMessage,0
      
;设备描述表和画图
invoke BeginPaint,hWin,ADDR Ps
invoke EndPaint,hWin,ADDR ps
invoke GetClientRect,hWin,ADDR rct
invoke SetViewportExtEx,hDC,rct.right,rct.bottom,0
invoke SelectObject,hDC,hPen
invoke ExtCreatePen,PS_SOLID or PS_GEOMETRIC or PS_ENDCAP_ROUND or PS_JOIN_ROUND,10,ADDR lb,0,0
invoke BeginPath,hDC
invoke MoveToEx,hDC,10,25,0
invoke LineTo,hDC,20,75
invoke EndPath,hDC
   
invoke CreateCompatibleDC,NULL    
invoke SelectObject,mDC,hBitmap      
invoke CreateSolidBrush,eax
invoke SelectObject,mDC,hBrush
invoke GetPixel,mDC,1,1
invoke ExtFloodFill,mDC,1,1,eax,FLOODFILLSURFACE
invoke DeleteObject,hBrush
invoke DeleteDC,mDC
 

六 调用自定义函数

invoke RoundedPath,hDC 
invoke IconButton,hWin,20,60,36,36,401
invoke SetBmpColor,hBmp1
invoke TopXY,Wwd,eax
 

七 标号

start:
StartLoop:
ExitLoop:

 
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值