FASM'' は別名 Flat Assembler'' とも呼ばれ、x86 アーキテクチャ用の最適化アセンブラです。
FASM はアセンブリで書かれているため、自分自身をアセンブル/ブートストラップすることができます。DOS、Linux、Unix、Windowsなど、さまざまなOS上で動作します。
SIMD拡張のMMX、SSE、SSE4、AVXを含むx86およびx86-64命令セットをサポートしています。
FASM は 16 進数を定義するためによく使われる構文をすべてサポートしています：
0xbadf00d ; C ライク構文
$badf00d  ; Pascal ライクな構文
0badf00dh ; h 構文、アセンブリ時に有効な先頭のゼロが必要
FASM はいくつかのユニークなラベル機能をサポートしています。
FASMは識別子やラベル名を使わないラベルをサポートしています。
@@: は匿名ラベルを表します。匿名ラベルはいくつでも定義できます。
@b: ソースをさかのぼったときに最も近い@@を表します。@rと@bは等価である。
@f: ソースを前方から見たときに最も近い@@を指す。
 
@@:
    inc eax
    push eax
    jmp @b ; 遅かれ早かれスタックフォールトになる。
    jmp @f ; この命令がヒットすることはない。
@@:            ; もしjmp @fがヒットしたら、命令ポインタはこの匿名ラベルに設定される。
    invoke ExitProcess, 0 ; Winasmのみ
ローカルラベルは'''（ピリオド）で始まります。
ローカルラベルは、グローバルラベルの親のコンテキストで参照できます。
 のようにします。
entry globallabel
globallabel：
    .locallabelone：
        jmp globallabel2.locallabelone
    .locallabeltwo：
 
globallabel2：
    .locallabelone: jmp
    .locallabeltwo：
        jmp globallabel.locallabelone ; 無限ループ
  以下のようになります。
mystring db "これは私の文字列です", 0
mystring.length = $ - mystring
マクロの引数の名前をその値に置き換えるからです。
マクロで作られた値 {
    some#value db 22
}
...
contrived 2
；組み立てると
some2 db 22
TBC