High-level assembler

The earliest high-level assembler was probably Burroughs' Executive Systems Problem Oriented Language (ESPOL) in about 1960, which provided an ALGOL-like syntax around explicitly-specified Burroughs B5000 machine instructions.

[disputed – discuss] This was followed by Niklaus Wirth's PL360 in 1968; this replicated the Burroughs facilities, with which he was familiar, on an IBM System/360.

This allows the use of high-level control statement abstractions wherever maximal speed or minimal space is not essential; low-level statements that assemble directly to machine code can be used to produce the fastest or shortest code.

High-level assemblers generally provide information-hiding facilities and the ability to call functions and procedures using a high-level-like syntax (i.e., the assembler automatically produces code to push parameters on the call stack rather than the programmer having to manually write the code to do this).

Examples include: data structures, unions, classes, and sets.