High-level assembler


A high-level assembler in computing is an assembler for assembly language that incorporate features found in a high-level programming language.
The earliest high-level assembler was probably Burroughs' Executive Systems Problem Oriented Language in about 1960, which provided an ALGOL-like syntax around explicitly-specified Burroughs B5000 machine instructions. 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. More recent high-level assemblers are Borland's Turbo Assembler, Netwide Assembler, Microsoft's Macro Assembler, IBM's High Level Assembler for z/Architecture systems, Alessandro Ghignola's Linoleum, X# used in Cosmos and Ziron.
High-level assemblers typically provide instructions that directly assemble one-to-one into low-level machine code as in any assembler, plus control statements such as IF, WHILE, REPEAT...UNTIL, and FOR, macros, and other enhancements. 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. The end result is assembly source code that is far more readable than standard assembly code while preserving the efficiency inherent with using assembly language.
High-level assemblers generally provide information-hiding facilities and the ability to call functions and procedures using a high-level-like syntax.
High-level assemblers also provide data abstractions normally found in high-level languages. Examples include: data structures, unions, classes, and sets. Some high-level assemblers support object-oriented programming.