FASM can output an executable PE directly, but sometimes you want to output an object file for linking with modules in other languages. The following program can be used to link with the C library of the GCC compiler with the following commands:

C:\>fasm hello.asm hello.obj
C:\>gcc hello.obj -o hello.exe

It's almost like magic! :)

format MS COFF

include 'C:\fasm\include\win32a.inc'

section '.data' data readable writeable

hello_msg db 'Hello, world!',0

section '.text' code readable executable

public _main
extrn '_printf' as printf

	ccall	printf,hello_msg
	xor	eax,eax
The article starter has earned a lot of community kudos, and such articles offer a bounty for quality replies.