An assembly language is a low-level language for programming
computers. It implements a symbolic representation of the numeric machine codes
and other constants needed to program a particular CPU architecture.
A D V E R T I S E M E N T
representation is usually defined by the hardware manufacturer, and is based on
abbreviations (called mnemonics) that help the programmer remember individual
instructions, registers, etc. An assembly language is thus specific to a certain
physical or virtual computer architecture (as opposed to most high-level
languages, which are portable).
Assembly languages were first developed in the 1950s, when they were referred
to as second generation programming languages. They eliminated much of the
error-prone and time-consuming first-generation programming needed with the
earliest computers, freeing the programmer from tedium such as remembering
numeric codes and calculating addresses. They were once widely used for all
sorts of programming. However, by the 1980s (1990s on small computers), their
use had largely been supplanted by high-level languages, in the search for
improved programming productivity. Today, assembly language is used primarily
for direct hardware manipulation, access to specialized processor instructions,
or to address critical performance issues. Typical uses are device drivers,
low-level embedded systems, and real-time systems.