Пример 1:
--------------------------------------------------------------------------------
Код:
include '%fasm%\win32ax.inc'
Простые примеры на fasm-e
Ссылка на источник приводится ниже.

section '.code' executable
start:
        invoke GetSystemMetrics,SM_CXSCREEN
        invoke wsprintf,@x,'0,24,%d,',eax
        invoke GetSystemMetrics,SM_CYSCREEN
        sub eax,52
        invoke wsprintf,@y,'%d,0',eax
        invoke lstrcat,@x,@y
        invoke ExpandEnvironmentStrings,@i,@o,MAX_PATH
        invoke WritePrivateProfileString,'OllyDbg','Placement',@x,@o
exit:
        invoke ExitProcess,NULL

section '.data' readable writable
        @x rb 2048
        @y rb 1024-52
        @i db '%ProgramFiles%\OllyDbg\OllyDbg.ini'
        @o db 1,0

.end start

Сначала ловим размеры экрана CXSCREEN/CYSCREEN, затем немного уменьшаем высоту экрана, на размер бара.
Вместе с зазором снизу получается SM_CYSCREEN - 52, для красоты )
Затем всё это пишем в OllyDbg.ini файл.
Ну и теперь ещё можно и выполнить OllyDbg.exe через WinExec()

section '.code' executable - так не правильно, но можно
section '.code' code executable - а так правильно.

Секции в которых не определён тип, кампилятор по-умолчанию будет считать данными.
Однако, более важно указать readable writable там, где это нужно!

RunDll32.DLL

Пример 2
--------------------------------------------------------------------------------
Код:
; RunDLLCpl.exe
include '%fasm%\win32ax.inc'
section '.code' executable
start:
        invoke ExpandEnvironmentStrings,@i,@o,MAX_PATH
        invoke ShellExecute,NULL,NULL,@o,NULL,NULL,SW_HIDE

        mov ebx,5
iwait:
        invoke FindWindow,@c,@t
        test eax,eax
        jnz isend
        dec ebx
        jz exit
        invoke Sleep,500
        jmp iwait
isend:
        push eax
        invoke ShowWindow,eax,SW_MINIMIZE
        pop eax
        invoke SendMessage,eax,WM_COMMAND,(0 shl 16) or IDOK,0
exit:
        retn

.end start

section '.data' readable writable
        @c db '#32770',0
        @t db 'Display Properties',0
        @i db '%SystemRoot%\Resources\Themes\Luna.theme'
        @o db 1,0

----------------------------------------------------------------------------------
Ещё примерчик на тему LoadLibraryA, динамическая подгрузка библиотек.

Код:
include '%fasm%\win32ax.inc'
section '.code' readable writable
start:
        invoke LoadLibraryA,@x
        mov ebx,eax
        invoke GetProcAddress,ebx,MsgBox
        mov [@@x],eax
        invoke @@x,NULL,'Hello!','..::..',MB_OK
exit:
        invoke LoadLibraryA,@y
        mov ebx,eax
        invoke GetProcAddress,ebx,ExitPr
        mov [@@y],eax
        invoke @@y,NULL

.end start

        @x db 'USER32.DLL',0
        MsgBox db 'MessageBoxA',0
        @y db 'KERNEL32.DLL',0
        ExitPr db 'ExitProcess',0
        @@x dd ?
        @@y dd ?

section '.rsrc' resource readable
        directory RT_MANIFEST,_manifest
        resource _manifest,1,LANG_NEUTRAL,manifest
        resdata manifest
        ;file '%fasm%\manifest32.xml'
        db '<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*"/> </dependentAssembly> </dependency> </assembly>'
        endres

----------------------------------------------------------------------------------
Нашёл на просторах патч на masm32, попутно было на C++ и Pascal.
Весьма нужная штука, я часто такое хотел в хозяйстве иметь.
Вообщем переписал в fasm исходник, заодно быстро нашёл различия.
Все переменные вида ADDR lpFile пишем без слова ADDR, все другие
не начинающиеся с ADDR пишем в скобках, напр. [hWnd]
Все HANDLE меняем на тип dd, все DWORD на dw.
Заголовки, директивы и оформление секций удаляем и берём из примеров fasm.
Можно вообще не понимать что делаешь

Код:
include '%fasm%\win32ax.inc'
section '.code' executable
start:
        invoke MessageBox,[hWnd],AppName,a9,MB_OK
        invoke CreateFile,lpFile,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_ARCHIVE,NULL
        mov [hFile],eax
        invoke SetFilePointer,[hFile],0x2,NULL,NULL ; offset to 2
        invoke WriteFile,[hFile],a9,1,SizeWrite,NULL ; write byte [a9] to offset 1
        invoke SetFilePointer,[hFile],0x4,NULL,NULL ; offset to 4
        invoke WriteFile,[hFile],ae,1,SizeWrite,NULL ; write byte [ae] to offset 3
        invoke CloseHandle,[hFile]
        invoke MessageBox,[hWnd],isOK,lpFile,MB_OK
exit:
        invoke ExitProcess,NULL

section '.data' readable
        AppName db 'File patch',NULL
        isOK db 'Done!',0
        lpFile db 'C:\zzzz.dat',NULL
        a9 db 0xa9 ; ©
        ae db 0xae ; ®
        db 'ack'
        db 0x99

section '.data' readable writable
        hFile dd ?
        hWnd dd ?
        SizeWrite dw ?

.end start

section '.rsrc' resource readable
        directory RT_ICON,icons,RT_GROUP_ICON,group_icons,RT_VERSION,versions,RT_MANIFEST,_manifest

        resource icons,\
        1,LANG_NEUTRAL,icon_data1,\
        2,LANG_NEUTRAL,icon_data2,\
        3,LANG_NEUTRAL,icon_data3,\
        4,LANG_NEUTRAL,icon_data4
        resource group_icons,1,LANG_NEUTRAL,main_icon
        resource versions,1,LANG_NEUTRAL,version
        resource _manifest,1,LANG_NEUTRAL,manifest

        icon main_icon,\
        icon_data1,'%fasm%\exec1.ico',\
        icon_data2,'%fasm%\exec2.ico',\
        icon_data3,'%fasm%\exec3.ico',\
        icon_data4,'%fasm%\exec4.ico'

        resdata manifest
        ;file '%fasm%\manifest32.xml'
        db '<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*"/> </dependentAssembly> </dependency> </assembly>'
        endres

        versioninfo version,VOS__WINDOWS32,VFT_APP,VFT2_UNKNOWN,LANG_ENGLISH+SUBLANG_DEFAULT,0,\
                    'FileDescription','Patch.exe',\
                    'LegalCopyright','',\
                    'FileVersion','1.0.0.0',\
                    'ProductVersion','1.0.0.0',\
                    'OriginalFilename','Patch.exe',\
                    'Company',''

--------------------------------------------------------------------------------------
Реальное применение макроса!
Код:
include '%fasm%\win32ax.inc'
section '.code' executable
start:
        invoke RegCreateKeyEx,HKCU,'Software\ZjSoft\WinAVIMP4',NULL,NULL,REGN,KEY_WRITE,NULL,phkResult,NULL

        macro rc r1,r2,r3,r4 {invoke RegSetValueEx,[phkResult],r1,NULL,r2,r3,r4}

        rc 'Code',REG_SZ,'59F0D04B31ADF0026C08E6041FD477284DA2910FDC11CDEB',48
        rc 'Current',REG_SZ,'Semiono',7
        rc 'Name',REG_DWORD,@00000001,4

        invoke RegCloseKey,[phkResult]

;...

section '.data' readable

        @00000001 dd 0x00000001

section '.data' readable writable

        phkResult dd ?

;...

        HKCU = HKEY_CURRENT_USER
        REGN = REG_OPTION_NON_VOLATILE
Строк не стало меньше, зато более читабельно.
----------------------------------------------------------------------------------------

Источник: http://samforum.ws/showthread.php?t=23758&page=2