An Assembler is a program that converts a human-readable (and, more particularly, human-writable) form of machine instructions (often called Assembly Language or Assembler) into a machine-readable form.
There are often several different machine-readable forms of output possible.
The key question with regard to the machine-readable format is, What are the capabilities of the tool chain programs that come after the assembler? There must be a loader (which loads the code into the executing machine's memory); there might be a linker (which combines different programs together into a single loadable program). The loader might be an absolute or relocating loader. These two processing programs are often underspecified and ignored, but they are crucially important to real program operation. -- escargo 9 Aug 2004