A86 is a 16-bit x86 DOS assembler. It uses Intel syntax but allows some shorthand, and less boilerplate than MASM.
See https://en.wikipedia.org/wiki/A86_(software). A86 is an x86 16-bit Intel-syntax assembler that runs under DOS, and is shareware by Eric Isaacson. His A86/A386 site still exists (in 2020) and has links to docs and examples.
A86 is 16-bit only, and creates .com
or object files. A386 with 32-bit support was developed later and is not shareware (last update in 2006). There is no way to assemble 64-bit instructions with A86.
A86 features include treating push
and pop
as pseudo-instructions that let you write multiple pushes on one line. push bx, si
will assemble to two separate push
instructions, for example.
A86 also allows you to omit the org 0x100
and assume
directives that some other assemblers need, allowing compact source for simple .com
programs.
A86 watermarks its output by choosing between which of two redundant encodings to use for op reg, reg
: Difference between MOV r/m8,r8 and MOV r8,r/m8 quotes the manual.
Its syntax is similar to MASM, but mov reg, symbol
can mean mov reg, immediate
with the symbol address (like NASM) , depending on whether the symbol is a label or a variable. Being a one-pass assembler, leaving it implicit only works for backwards references to symbols. See A86 - definition conflicts with forward reference for example.
Eric Isaacson was one of the authors of the first x86 assembler, ASM86. A86 syntax is derived from that flavour of Intel syntax. See this answer