Here is a dialog box example coded with GAS V2.16.91 :
.intel_syntax noprefix
.global _start
.include "invoke.gi"
.include "Dlgbox.gi"
.data
DlgName:
.asciz "MyDialog"
.bss
hInstance:
.long 0
hCursor:
.long 0
.text
_start:
invoke GetModuleHandle,1,0
mov hInstance,eax
invoke DialogBoxParam,5,hInstance,OFFSET(DlgName),0,OFFSET(DlgProc),0
invoke ExitProcess,1,eax
// DlgProc PROC hWnd:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD
DlgProc:
push ebp
mov ebp,esp
cmp dword ptr , WM_CLOSE
jne initdlg
invoke EndDialog,2,,0
jmp true
initdlg:
cmp dword ptr , WM_INITDIALOG
jne setcursor
invoke LoadCursor,2,0,IDC_CROSS
mov hCursor,eax
jmp true
setcursor:
cmp dword ptr , WM_SETCURSOR
jne false
invoke SetCursor,1,hCursor
jmp true
false:
xor eax,eax
pop ebp
ret 16
true:
mov eax,1
pop ebp
ret 16