⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 macro.asm

📁 一个十六进制编辑器源代码,cool!
💻 ASM
字号:
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
__SB_SETTEXT macro nPos,lpText
	invoke SendMessage,hStatusBar,SB_SETTEXT ,nPos,lpText
	endm
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

__SB_SETINT macro nPos,nNum,lpFm
	invoke wsprintf,addr szTempBuf,lpFm,nNum
	invoke SendMessage,hStatusBar,SB_SETTEXT ,nPos,addr szTempBuf
	endm
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

__GetRadio macro nID
		invoke SendDlgItemMessage,@hDlg,nID,BM_GETSTATE ,NULL ,NULL 
	endm
;------------------------------------------------
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
__senddlgmessage macro nID,uMsg,wParam:=<0>,lParam:=<0>
	invoke SendDlgItemMessage,@hDlg,nID,uMsg,wParam,lParam
	endm
;----------------------------------------------------------
__createdialog macro nID,lpFn,hDialog,p:=<hWnd>
	.if !hDialog
		invoke CreateDialogParam,hInstance,nID,p,lpFn,0
		mov hDialog,eax
	.else
		invoke ShowWindow,hDialog,SW_SHOW
	.endif
	endm
__dialogbox macro nID,lpFn,p:=<hWnd>
			invoke DialogBoxParam,hInstance,nID,hWin,lpFn,p
			endm
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
__alloc macro @size
	invoke GlobalAlloc,GPTR,@size
	endm
__free macro @lpMem
	invoke GlobalFree,@lpMem
	endm
__msize macro @lpMem
	invoke GlobalSize,@lpMem
	endm
__swap_start_end macro
	mov eax,dwBlockStart
	.if eax>dwBlockEnd
		push eax
		push dwBlockEnd
		pop dwBlockStart
		pop dwBlockEnd
	.endif
	endm
__loopfordebug macro
	push eax
	mov eax,1
	.while eax
	.endw
	pop eax
	endm
__EndDialog macro hDialog
	.if hDialog
		invoke DestroyWindow,hDialog
	.endif
	endm

;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
_div macro n
	xor edx,edx
	div n
	endm

ctext MACRO y:VARARG                    ;This is a good macro 
        LOCAL sym 
    CONST segment 
        IFIDNI <y>,<> 
            sym db 0 
        ELSE 
            sym db y,0 
        ENDIF 
    CONST ends 
        EXITM <offset  sym> 
    ENDM
_msgbox macro @lpText,@lpCaption:=<addr szWindowName>,@uType:=<MB_ICONINFORMATION>
	invoke MessageBox,hWnd,@lpText,@lpCaption,@uType
	endm

;////////////////////////////////////////////////////////////////
;以下没什么实际作用的宏,只是为了在调试时显示结果的方便
lbaddnum macro num ;调试用
	push eax
	mov eax,num
	invoke wsprintf,addr szTempBuf,addr szFm,eax
	invoke SendMessage,1224,LB_ADDSTRING ,0,addr szTempBuf
	pop eax
	endm
lbaddstr macro _str;调试用
	push eax
	invoke SendMessage,1224,LB_ADDSTRING ,0,_str
	pop eax
	endm
m2m macro m,n
	push n
	pop m
	endm
msgbox macro @lpText;主要用于调试
	push eax
	invoke MessageBox,0,@lpText,addr szWindowName,MB_ICONINFORMATION
	pop eax
	endm
msgbox2 macro n,m;主要用于调试
	push eax
	invoke MessageBox,0,n,m,MB_ICONINFORMATION
	pop eax
	endm
showmsg macro
	push eax
	invoke MessageBox,hWnd,addr szWindowName,addr szWindowName,32
	pop eax
	endm
shownum macro num,string:=<0>;调试用
	local @@szfmshownum
	.data?
		@@szfmshownum db 255 dup(?)
	.data
		@@szfm db '%u',13,'%08X',0
	.code		
	pushad
	invoke wsprintf,addr @@szfmshownum,addr @@szfm,num,num
	invoke MessageBox,0,addr @@szfmshownum,string,0
	popad
	endm
settext macro num;调试用
	push eax
	ifb<num>
		invoke SetWindowText,hWnd,addr szClassName
	else
		invoke wsprintf,addr szTempBuf,addr szFmHexD,num
		invoke SetWindowText,hWnd,addr szTempBuf
	endif
	pop eax
	endm
setnum macro n1,n2;调试用
	push ecx
	push eax
	invoke wsprintf,addr szTempBuf,addr szFmChar,n1,n2
	invoke SetWindowText,hWnd,addr szTempBuf
	pop eax
	pop ecx
	endm

;;;;;;;;;;;;;;;;;;;
;一些数学宏
__max2 macro n,m
	mov eax,n
	.if eax<m
		mov eax,m
	.endif
	exitm<eax>
	endm
__min2 macro n,m
	mov eax,n
	.if eax>m
		mov eax,m
	.endif
	exitm<eax>
	endm
__abs2 macro n,m
	mov eax,n
	sub eax,m
	.if sdword ptr eax <0
		neg eax
	.endif
	exitm<eax>
	endm
__add2 macro n,m
	mov eax,n
	add eax,m
	exitm<eax>
	endm
__sub2 macro n,m
	mov eax,n
	sub eax,m
	exitm<eax>
	endm
__hiword macro n
	mov eax,n
	shr eax,16
	exitm<eax>
	endm
__loword macro n
	mov eax,n
	movzx eax,ax
	exitm<eax>
	endm
__lowbyte macro n
	mov eax,n
	movzx eax,al
	exitm<eax>
	endm
__and macro n,m
	mov eax,n
	and eax,m
	exitm<eax>
	endm
	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -