An abstract text representation of machine code usually with extensions such as macros. It is generally the "lowest level" programming language in common use today. A program that takes in *assembly* and outputs machine code is typically called an "assembler".