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 language]?s, 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.