Assembler (or assembly language) is a low-level programming language for computers, microprocessors, microcontrollers, and other programmable devices in which each statement corresponds to a single machine language instruction. An assembly language is specific to a certain computer architecture, in contrast to most high-level programming languages, which generally are portable to multiple systems.

Assembly language programs are converted into executable machine code by a utility program referred to as an assembler, the conversion process being referred to as assembly or assembling the program.

Assembly language uses mnemonics to represent the low-level machine operations that are unique to the target system. Depending on the particular instruction being assembled, an operand may be part of the instruction. Most assemblers also understand the use of labels and symbols to represent addresses and constants, making it possible to symbolically represent operands instead of entering hard coded data. Generally speaking, there is a onetoone correspondence between each assembly language statement and an executable machine instruction.

Many assemblers offer additional mechanisms to facilitate program development, control the assembly process, and aid debugging. Assemblers often include a macroinstruction facility, a sort of shorthand for a group of instructions, such assemblers being referred to as macro assemblers.