Es werden viele gebräuchliche Direktiven/Pseudo-Opcodes unterstützt (abhängig vom Syntax-Modul), ebenso wie CPU-spezifische Erweiterungen.
Der Assembler beherrscht Optimierungen (etwa Wahl des kürzesten Verzweigungsbefehls oder Adressierungsmodus) und Lockerungen (z.B. eine Verzweigung zu einen absoluten Sprung umwandeln, wenn nötig).
Die meisten Syntax-Module unterstützen Makros, Inkludier-Direktiven, Wiederholungen, bedingte Assemblierung und lokale Symbole.
Momentan werden folgende CPUs offiziell von vasm unterstützt:
* M680x0 Familie (inkl. M6888x, M68851 and CPU32)
* ColdFire Familie (alle Modelle von V2, V3, V4, V4e)
* 80x86 Familie (IA32 8/16/32 bit, per MIT-Syntax)
* PowerPC Familie (POWER, 40x, 6xx, 7xx, 7xxx, 860, e300)
* ARM (Architektur ARMv1 bis ARMv4, inkl. THUMB mode)
* Jaguar RISC (GPU und DSP Instruktions-Sets)
* TR3200 (virtuelle CPU von 0x10c)
* Z80 Familie (Z80, 8080, GBZ80, 64180, RCM2/3/4k)
* C16x/ST10
* 6502 Familie
* 6800 Familie (6800, 68HC11)
Unterstützte Syntax-Arten:
* Standard MIT (GNU-as Stil) Syntax
* Motorola/Freescale 68k Syntax (Devpac-kompatibel)
* Atari MadMac Syntax (6502, 68k, Jaguar)
* Alte 8-bit ähnliche Syntax
Unterstützte Ausgabe Dateiformate:
* ELF (M68k, PowerPC, i386, ARM und JRISC)
* a.out (M68k und i386)
* Amiga Hunk Format (M68k)
* TOS Executable Format (M68k)
* EHF Extended Hunk Format (PowerPC)
* Raw, Binärausgabe (alle)
* VOBJ proprietäres Versatile Object Format (alle)
* Test, Debug-Ausgabe (alle)