a) Tutoriales:
En este mismo subforo, EntryPoint
http://foro.elhacker.net/asm/entry_point-t256455.0.htmlb)Invoke es una macro, algo así como codigo del preprocesador.
Tienes el codigo fuente de esa macro dentro del include de fasm.
Invoke FuncA, B, C, D
Genera:
push D
push C
push B
call [FuncA]
Es tan solo para que el codigo sea más facil de leer. push/pop no es lo mas interesante de la pila. Mas interesantes aun son las variables locales de una funcion que se guardan en la pila que al terminar la funcion se libera.
c)No conozco manuales de fasm en español, pero revisa el enlace del EntryPoint a ver si encuentras algo.
La mejor documentacion de FASM está en ingles y esta en el sitio oficial de fasm.
d)Para aprender assembly para win32 no hay nada mejor que los tutos de iczelion que esta el enlace en el post EntryPoint, son para masm, pero las diferencias no son tan grandes.
Solo debes distinguir "variable" y "[variable]" en la manera que se usa en masm "offset/addr variable" "variable".
Tambien la MSDN es de mucha ayuda.
e)Si se puede hacer dll en fasm, hay un ejemplo en la carpeta EXAMPLES del ensamblador
; DLL creation example
format PE GUI 4.0 DLL
entry DllEntryPoint
include 'win32a.inc'
section '.text' code readable executable
proc DllEntryPoint hinstDLL,fdwReason,lpvReserved
mov eax,TRUE
ret
endp
; VOID ShowErrorMessage(HWND hWnd,DWORD dwError);
proc ShowErrorMessage hWnd,dwError
local lpBuffer:DWORD
lea eax,[lpBuffer]
invoke FormatMessage,FORMAT_MESSAGE_ALLOCATE_BUFFER+FORMAT_MESSAGE_FROM_SYSTEM,0,[dwError],LANG_NEUTRAL,eax,0,0
invoke MessageBox,[hWnd],[lpBuffer],NULL,MB_ICONERROR+MB_OK
invoke LocalFree,[lpBuffer]
ret
endp
; VOID ShowLastError(HWND hWnd);
proc ShowLastError hWnd
invoke GetLastError
stdcall ShowErrorMessage,[hWnd],eax
ret
endp
section '.idata' import data readable writeable
library kernel,'KERNEL32.DLL',\
user,'USER32.DLL'
import kernel,\
GetLastError,'GetLastError',\
SetLastError,'SetLastError',\
FormatMessage,'FormatMessageA',\
LocalFree,'LocalFree'
import user,\
MessageBox,'MessageBoxA'
section '.edata' export data readable
export 'ERRORMSG.DLL',\
ShowErrorMessage,'ShowErrorMessage',\
ShowLastError,'ShowLastError'
section '.reloc' fixups data discardable