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
CL has been thinking about writing an explanation of why Tcl and assembly language can be good partners, a practice briefly described in, for example, "Programming down to the Silicon" [L1 ].
In the meantime, here's a reference to the Mac OS X Assembler Guide [L2 ].
See also Playing Assembler for some 8080 memories...