:see the terminology section below for information regarding inconsistent use of the terms assembly and assembler. thumb|motorola mc6800 assembly listing, showing original assembly language and the assembled form an assembly language is a low-level programming language for a computer, or other programmable device, in which there is a very strong (generally one-to-one) correspondence between the language and the architecture's machine code instructions. each assembly language is specific to a particular computer architecture, in contrast to most high-level programming languages, which are generally portable across multiple architectures, but require interpreting or compiling. assembly language is converted into executable machine code by a utility program referred to as an assembler; the conversion process is referred to as assembly, or assembling the code. assembly language uses a mnemonic to represent each low-level machine instruction or operation. typical operations require one or more operands in order to form a complete instruction, and most assemblers can therefore take labels, symbols and expressions as operands to represent addresses and other constants, freeing the programmer from tedious manual calculations. macro assemblers include a macroinstruction facility so that (parameterized) assembly language text can be represented by a name, and that name can be used to insert the expanded text into other code. many assemblers offer additional mechanisms to facilitate program development, to control the assembly process, and to aid debugging. ==key concepts== ===assembler=== an assembler is a program which creates object code by translating combinations of mnemonics and syntax for operations and addressing modes into their numerical equivalents. this representation typically includes an operation code ("opcode") as well as other control bits.whether these bitgroups are orthogonal, or to what extent they are, depends on the cpu and instruction set design at hand. the assembler also calculates constant expressions and resolves symbolic names for memory locations and other entities.david salomon (1993). assemblers and loaders the use of symbolic references is a key feature of assemblers, saving tedious calculations and manual address updates after program modifications. most assemblers also include macro facilities for performing textual substitution&mdash;e.g., to generate common short sequences of instructions as inline, instead of 
Assembly_languages Programming_language_implementation