2.3 Assembly language

Assembly language is just a level on top of machine code. Instead of having to memorize 32-bit patterns, a programmer only needs to memorize “mnemonics”. Each mnemonic name is an abbreviated word that specifies what an instruction does. For example, MOV means move, and JMP means jump.

An assembly language also allows the use of symbolic labels both for branching and allocating data memory for variables. This allows a programmer to focus more on the logic and meanings of a program rather than counting bytes and addresses.

An assembly language differs from an HLPL in that a programmer gets to specify the exact CPU operation directly. Although a programmer defers a lot of the computation of offsets and addresses to the assembler, he/she does directly specify which instructions to use in a program.

By comparison, the actual instructions that a CPU executes to run a HLPL program is determined by many factors.