FASM
DeveloperTomasz Grysztar
Initial releaseMarch 2000; 26 years ago (2000-03)
Stable release
1.73.35[1] Edit this on Wikidata / 24 February 2026; 3 months ago (24 February 2026)
Written inAssembly
Operating systemUnix-like, Linux, Windows and IDE, MS-DOS and IDE, OpenBSD, etc., MenuetOS, KolibriOS, OctaOS, DexOS and IDE, SkyOS, Solar_OS
Platformx86, x86-64
TypeAssembler
LicenseSimplified BSD with a weak copyleft clause
Websiteflatassembler.net
Repository

FASM (flat assembler) is an assembler for x86 processors. It supports Intel-style assembly language on the IA-32 and x86-64 computer architectures. It claims high speed, size optimizations, operating system (OS) portability, and macro abilities.[2][3] It is a low-level assembler[3] and intentionally uses very few command-line options. It is free and open-source software.

All versions of FASM can directly output any of the following: flat "raw" binary (usable also as MS-DOS COM executable or SYS driver), objects: Executable and Linkable Format (ELF) or Common Object File Format (COFF) (classic or MS-specific), or executables in either MZ, ELF, or Portable Executable (PE) format (including WDM drivers, allows custom MZ DOS stub). An unofficial port targeting the ARM architecture also exists.[4]

History

edit

The project was started in 1999 by Tomasz Grysztar, a.k.a. Privalov, at that time an undergraduate student of mathematics from Poland. It was released publicly in March 2000.[5][6] FASM is completely written in assembly language and comes with full source. It is self-hosting and has been able to assemble itself since version 0.90 (May 4, 1999).

FASM originally ran in 16-bit flat real mode. 32-bit support was added and then supplemented with optional DPMI support. Designed to be easy to port to any operating system with flat 32-bit addressing, it was ported to Windows, then Linux.

Design

edit

FASM does not support as many high-level statements as MASM or TASM.[3] It provides syntax features and macros, which make it possible to customize or create missing statements.[5] Its memory-addressing syntax is similar to TASM's ideal mode and NASM. Brackets are used to denote memory operands as in both assemblers, but their size is placed outside the brackets, like in NASM.[7]

FASM is a multi-pass assembler. It makes extensive code-size optimization and allows unconstrained forward referencing.[3][7] An unusual FASM construct is defining procedures only if they are used somewhere in the code, something that in most languages is done per-object by the linker.

FASM is based on the "same source, same output" principle: the contents of the resulting file are not affected by the command line.[7] Such an approach saves FASM sources from compiling problems often present in many assembly projects. On the other hand, it makes it harder to maintain a project that consists of multiple separately compiled source files or mixed-language projects. However, there exists a Win32 wrapper called FA, which mitigates this problem.[8] FASM projects can be built from one source file directly into an executable file without a linking stage.[3]

IDE

edit

Fresh, a project started by John Found, is an integrated development environment for FASM under Windows and Linux.[9]

Use

edit

Operating systems written with FASM:

Compilers that use FASM as a backend:

See also

edit

References

edit
  1. ^ "Download".
  2. ^ Grysztar, Tomasz (2008-05-12). "Flat Assembler Programmer's Manual". flat assembler. Retrieved 2008-05-12.
  3. ^ a b c d e Hyde, Randall. "Which Assembler is the Best?". Retrieved 2008-05-18.{{cite web}}: CS1 maint: deprecated archival service (link)
  4. ^ "FASMARM". 2008-03-20. Retrieved 2008-05-12.
  5. ^ a b "Interview with Privalov the author of FASM". 2004-08-12. Archived from the original on 2007-10-08. Retrieved 2008-05-12.
  6. ^ Grysztar, Tomasz (2000-03-15). "flat assembler". Retrieved 2008-05-19.
  7. ^ a b c Grysztar, Tomasz. "Flat Assembler Design Principles". Retrieved 2008-05-12.
  8. ^ Grysztar, Tomasz. "FA – command line extension for fasm". Retrieved 2012-05-11.
  9. ^ Found, John. "Fresh ID project".
  10. ^ "MenuetOS". Retrieved 2008-05-18.
edit

📚 Artikel Terkait di Wikipedia

Netwide Assembler

The Netwide Assembler (NASM) is an assembler and disassembler for the Intel x86 architecture. It can be used to write 16-bit, 32-bit (IA-32) and 64-bit

List of assembly software and tools

"MARS MIPS Assembler and Runtime Simulator". Missouri State University. November 12, 2025. Retrieved May 10, 2026. "RARS -- RISC-V Assembler and Runtime

Self-hosting (compilers)

compiler bootstrapping example ClojureScript Next "flat assembler". Retrieved 7 January 2022. The flat assembler is self-hosting and the complete source code

Microsoft Macro Assembler

Microsoft Macro Assembler (MASM) is an x86 assembler that uses the Intel syntax for MS-DOS and Microsoft Windows. Beginning with MASM 8.0, there are two

Fresh

Marqus Brown Fresh (IDE), an integrated development environment for flat assembler languages Fresh (wine), a positive perception of wine acidity Fr3sh

List of x86 instructions

instruction latencies, throughputs and micro-operation breakdowns for Intel, AMD and VIA CPUs Netwide Assembler Instruction List (from Netwide Assembler)

Ready-to-assemble furniture

Ready-to-assemble furniture (RTA), also known as knock-down furniture (KD), flat-pack furniture, or kit furniture, is a form of furniture that requires

Windows API

under Microsoft Macro Assembler (MASM) by using custom made or converted headers and libraries from the Platform SDK. Flat assembler FASM allows building