Computers can only execute instructions written in machine language, a sequence of binary codes specific to the processor. Because writing programs directly in binary is difficult for humans, programmers write in more readable languages, which must then be translated before the computer can run them.
Assembly language uses short mnemonic codes, such as ADD or MOV, that correspond closely to machine instructions but are easier for people to read and write. An assembler is the translator program whose job is to convert this assembly language code into the equivalent machine language code the processor can execute directly.
This is different from a compiler, which translates a high level language, one using English-like statements and complex expressions, into machine language. Because assembly language and high level language sit at different levels of abstraction, they need different translator programs, and an assembler specifically handles assembly language.
Exam takeaway: match the translator to its source language, an assembler for assembly language and a compiler or interpreter for high level language, rather than treating all translators as interchangeable.