As well as translating instruction mnemonics into opcodes, assemblers provide the ability to provide symbolic names for memory locations (saving tedious calculations and manually updating addresses when a program is slightly modified), and macro facilities for performing textual substitution - typically use to encode common short sequences of instructions.
Assemblers are far simpler to write than compilers for high-level languages, and have been available since the 1950s. Modern assemblers, especially for RISC based architectures, such as MIPS, SPARC and HP Precision optimize instruction scheduling to exploit the CPU pipeline efficiently. Most modern assemblers are 'macro assemblers', which allow complex macro constructs and abstract datatypes, such as structures.
The term "Assembler" is also used in Nanotechnology to refer to a construction machine that manipulates and builds with individual atoms or molecules. One of the prime goals of long-term nanotech research is the production of a programmable self-replicating assembler. This is a device which can make a complete copy of itself given raw materials and energy. After sufficient quantities of assembers are available, they are then re-programmed to produce something useful.
Nature abounds with self-replicating assemblers called bacteria, however they are not easily programmable. Some progress has been made in this area, where researchers have inserted genes for a particular protein into a bacteria. One of the first examples of this is the immune-system hormone interferon.