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

📄 macros.asm

📁 汇编语言的FFT算法。速度还比较快
💻 ASM
📖 第 1 页 / 共 2 页
字号:
InkL Macro col,Thick:=<0>,Style:=<PS_SOLID>,HandleDC:=<CurrentDC>			;HandleDC optional
		Invoke CreatePen,Style,Thick,col
		Invoke SelectObject,HandleDC ,eax
EndM

;---------------------------------------------------------------------------------;
Paper Macro BkCol:req,HDC:=<CurrentDC>
	Invoke SetBkColor,HDC ,BkCol
EndM

;---------------------------------------------------------------------------------;
PlayWave Macro pszSound,fdwSound			;fdwSound (flags) optional
Local PW1
.DATA
PW1 DB pszSound,0
.CODE
	IFNB <fdwSound>
		Invoke PlaySound,Addr PW1,NULL,SND_FILENAME or fdwSound
	ELSE
		Invoke PlaySound,Addr PW1,NULL,SND_FILENAME or SND_ASYNC
	ENDIF
EndM

;---------------------------------------------------------------------------------;
Mem Macro pName:req,NoBytes:req
Align 4
.DATA?
pName 	DD ?
.CODE
		Invoke GetProcessHeap
		mov HeapHnd,eax	
		Invoke HeapAlloc,HeapHnd,NULL,NoBytes
		;Invoke GlobalAlloc,GMEM_FIXED,NoBytes
		mov pName,eax
		ErrorCheck "Memory allocation"
EndM

;---------------------------------------------------------------------------------;
MemRsz Macro pName:req,NoBytes:req
		Invoke GetProcessHeap
		Invoke HeapReAlloc,eax,HEAP_GENERATE_EXCEPTIONS,pName,NoBytes
		;Invoke HeapReAlloc,HeapHnd,HEAP_ZERO_MEMORY,pName,NoBytes
		mov pName,eax
		ErrorCheck "Heap Realloc"
EndM

;---------------------------------------------------------------------------------;
@Mem Macro NoBytes:req
		Invoke GetProcessHeap
		mov HeapHnd,eax	
		Invoke HeapAlloc,HeapHnd,HEAP_ZERO_MEMORY,NoBytes
		ErrorCheck "Memory allocation@"
		EXITM <eax>
EndM

;---------------------------------------------------------------------------------;
MemFree Macro pName:req,NoErCheck	; NoErCheck optional
        Invoke GetProcessHeap
        mov HeapHnd,eax
		Invoke HeapFree,HeapHnd,NULL,pName
		IFB <NoErCheck>
			ErrorCheck "HeapFree"
		ENDIF
EndM

;---------------------------------------------------------------------------------;
vMem Macro pName:req,NoBytes:req
.DATA?
pName 	DD ?
.CODE
		Invoke VirtualAlloc,NULL,NoBytes,MEM_COMMIT,PAGE_READWRITE
		mov pName,eax
		ErrorCheck "Virtual Alloc"
EndM

;---------------------------------------------------------------------------------;
@vMem Macro NoBytes:req
.CODE
		Invoke VirtualAlloc,NULL,NoBytes,MEM_COMMIT,PAGE_READWRITE
		push eax
		ErrorCheck "Virtual Alloc"
		pop eax
		EXITM <eax>
EndM

;---------------------------------------------------------------------------------;
VMfree Macro pName:req,NoErCheck	; NoErCheck optional
		Invoke VirtualFree,pName,0,MEM_RELEASE 
		IFB <NoErCheck>
    		ErrorCheck "VirtualFree"
        ENDIF
EndM

;-------------------------------***********************---------------------------;
;---------------------------------------------------------------------------------;
FileRead Macro FileHandle:req,pFileBuffer:req,NoBytes:req
Local rf1
.DATA?
rf1	DD ?
.CODE
		Invoke ReadFile,FileHandle, pFileBuffer,NoBytes,Addr rf1,NULL
		ErrorCheck "File Read"
		mov eax,rf1
EndM

;---------------------------------------------------------------------------------;
FileWrite Macro fHnd:req,pBuffer:req,nBytes:req
Local NOfBw
.DATA?
NOfBw	DD ?
.CODE
		Invoke WriteFile,fHnd,pBuffer,nBytes,Addr NOfBw,NULL
		ErrorCheck "Write File"
EndM

;---------------------------------------------------------------------------------;
FileOpen Macro strFileName:req,fHnd,OpenMode:=<OPEN_ALWAYS>, Attrib:=<Random>		;,ShareMode
Local oFName
.DATA
oFName	DB strFileName,0
IFNB <fHnd>
.DATA?
fhan	DD ?
ENDIF
.CODE
		Invoke CreateFile,Addr oFName,Attrib,FILE_SHARE_READ or FILE_SHARE_WRITE,NULL,OpenMode,FILE_ATTRIBUTE_ARCHIVE,NULL
	IFNB <fHnd>
		mov fhan,eax
		ErrorCheck "File Open"
	ELSE
		push eax
		ErrorCheck "File Open"
		pop eax
	ENDIF
EndM

;---------------------------------------------------------------------------------;
 FileOpenPtr Macro pFileName:req,fHnd,OpenMode:=<OPEN_EXISTING>, Attrib:=<Random>		;,ShareMode
;Local oFName
.DATA
;oFName	DB strFileName,0
IFNB <fHnd>
.DATA?
fhan	DD ?
ENDIF
.CODE
		;Invoke CreateFile,Addr pFileName,GENERIC_READ,0,0,OpenMode,FILE_ATTRIBUTE_ARCHIVE,NULL
		Invoke CreateFile,Addr pFileName,Attrib,FILE_SHARE_READ or FILE_SHARE_WRITE,0,OpenMode,0,NULL
	IFNB <fHnd>
		mov fhan,eax
		ErrorCheck "File Open"
	ELSE
		push eax
		ErrorCheck "File Open"
		pop eax
	ENDIF
EndM

;---------------------------------------------------------------------------------;
CloseHnd Macro hObject:req,NoErCheck	; NoErCheck optional
		Invoke CloseHandle,hObject
		IFB <NoErCheck>
		    ErrorCheck "Close Handle"
		ENDIF
EndM

;---------------------------------------------------------------------------------;
FileSeek Macro hFile:req,SeekPos:req,StartPoint:=<FILE_CURRENT>,NoErCheck   ;out eax - Filepointer
		Invoke SetFilePointer,hFile,SeekPos,NULL,StartPoint
		IFB <NoErCheck>
		    push eax
		    ErrorCheck "Set File Pointer"
		    pop eax
		ENDIF
EndM

;---------------------------------------------------------------------------------;
FileDel	Macro FileName:req
Local fName
.DATA
fName	DB FileName,0
		Invoke DeleteFile,fName
		ErrorCheck "Delete File"
EndM

;---------------------------------------------------------------------------------;
FileSize Macro FileHandle:req,nvarSize		;optional out
;IFNB <nvarSize>
;.DATA?
;nvarSize DD ?
.CODE
		Invoke GetFileSize,FileHandle,NULL
	IFNB <nvarSize>
		mov nvarSize,eax
		ErrorCheck "File Size"
	ELSE
	  IFDEF EnableError
		push eax
		ErrorCheck "File Size"
		pop eax
	  ENDIF	
	ENDIF
EndM
;---------------------------------------------------------------------------------;
@FileSize Macro FileHandle:req	;optional out
.CODE
		Invoke GetFileSize,FileHandle,NULL
	  ;IFDEF EnableError
	  ;.if eax==inv
		;push eax
		;ErrorCheck "File size"
		;pop eax
		;EXITM <eax>
	  ;ELSE
	  ;	EXITM <eax>
	  ;ENDIF
	  .If eax==0ffffffffh
	     xor eax,eax
	     ErrorCheck "File size"
      .EndIf
      EXITM <eax>
EndM

;---------------------------------------------------------------------------------;
FileFindF Macro FileName:req,nBuffer     ;out nBuffer -  find struct
Local fName
.DATA
fName DB FileName,0
.DATA?
Align 4
nBuffer WIN32_FIND_DATA <?>
.CODE
		Invoke FindFirstFile,Addr fName,Addr nBuffer
		mov FindFileHnd,eax
		ErrorCheck "Find File First"
EndM

;---------------------------------------------------------------------------------;
FileFindN Macro nBuffer:req
		Invoke FindNextFile,FindFileHnd,Addr nBuffer
EndM 

;-------------------------------***********************---------------------------;
;---------------------------------------------------------------------------------;
Font Macro TypeFaceName,fType:=<FF_ROMAN>,height:=<0>,width:=<0>,thick:=<400>,Italic:=<0>,Underline:=<0>, Strikeout:=<0>
		IFB <TypeFaceName>
			Invoke CreateFont,height,width,0,0,thick,Italic,Underline,Strikeout,DEFAULT_CHARSET,OUT_TT_PRECIS,CLIP_DEFAULT_PRECIS,4,fType,NULL
		ELSE
			Invoke CreateFont,height,width,0,0,thick,Italic,Underline,Strikeout,DEFAULT_CHARSET,OUT_TT_PRECIS,CLIP_DEFAULT_PRECIS,4,fType,cStr(TypeFaceName)
		ENDIF
		;push eax
 		;ErrorCheck "create font"
 		;pop eax
		Invoke SelectObject,CurrentDC,eax
		Invoke DeleteObject,eax
 		;ErrorCheck "select object"
EndM

;---------------------------------------------------------------------------------;
FontEx Macro TypeFaceName,fType:=<FF_ROMAN>,height:=<0>,width:=<0>,thick:=<400>,Italic:=<0>,Underline:=<0>, Strikeout:=<0>
		IFB <TypeFaceName>
			Invoke CreateFont,height,width,0,0,thick,Italic,Underline,Strikeout,DEFAULT_CHARSET,OUT_TT_PRECIS,CLIP_DEFAULT_PRECIS,4,fType,NULL
		ELSE
			Invoke CreateFont,height,width,0,0,thick,Italic,Underline,Strikeout,DEFAULT_CHARSET,OUT_TT_PRECIS,CLIP_DEFAULT_PRECIS,4,fType,Offset TypeFaceName
		ENDIF
		Invoke SelectObject,CurrentDC,eax
EndM

;---------------------------------------------------------------------------------;
SetDskBk Macro col:=<HTTRANSPARENT>
 		Invoke FindWindow, cStr("progman"), cStr("program manager")
        Invoke FindWindowEx, eax, 0, cStr("shelldll_defview"), NULL
        Invoke FindWindowEx, eax, 0, cStr("syslistview32"), NULL
        Invoke SendMessage, eax, LVM_SETTEXTBKCOLOR, 0, col
        Invoke SendMessage, eax, LVM_SETTEXTBKCOLOR, 0, col
        Invoke SendMessage, HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0
EndM

;---------------------------------------------------------------------------------;
;---------------------------------------------------------------------------------;

szText macro Name, Text:VARARG
Local lbl
          jmp lbl
          Name db Text,0
lbl:
endm

;---------------------------------------------------------------------------------;
m2m macro M1, M2
        push M2
        pop  M1
endm

;---------------------------------------------------------------------------------;
return macro arg
        mov eax, arg
        ret
endm

;---------------------------------------------------------------------------------;
SetWinBk Macro col:req,hWnd      ;RGB color
	    Invoke  CreateSolidBrush,col
	    mov esi,eax
	    Invoke  SetClassLong,hWnd,GCL_HBRBACKGROUND,eax
	    ;Invoke  SetWindowPos,hWnd,0,0,0,0,0,SWP_NOZORDER or SWP_FRAMECHANGED or SWP_NOMOVE or SWP_NOSIZE
	    Invoke  InvalidateRect,hWnd,NULL,TRUE
	    Invoke  DeleteObject,esi
EndM

;---------------------------------------------------------------------------------;
;---------------------------------------------------------------------------------;
Div3dQ	Macro	mmr1:req,mmr2:req
		pfrcp	mmr1,mmr1
		pfmul	mmr2,mmr1
EndM

;---------------------------------------------------------------------------------;
Div3dS	Macro	mmr1:req,mmr2:req,mmtmp:req
		pfrcp	  mmtmp,mmr2
		punpckldq mmr2,mmr2
		pfrcpit1  mmr2,mmtmp
		pfrcpit2  mmr2,mmtmp
		pfmul	  mmr1,mmr2
EndM

;---------------------------------------------------------------------------------;
;---------------------------------------------------------------------------------;

⌨️ 快捷键说明

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