Assembly language

Edit · View history

Assembly Language

Assembly language (often shortened to asm) is a low-level programming language that has a strong correspondence between its instructions and the architecture's machine code instructions. Each assembly language is specific to a particular computer architecture, in contrast to most high-level programming languages, which are generally portable across multiple systems.

Assembly language uses symbolic names for operations (mnemonics) and addresses (labels) to make the underlying machine code more readable to humans. It also provides directives for data storage, memory layout, and other control functions. Programs written in assembly are assembled into executable machine code using an assembler. Because of its direct hardware access, assembly is used for tasks that require high performance, precise timing, or direct manipulation of hardware, such as in embedded systems, operating system kernels, and device drivers.

Features

History

Assembly language emerged in the late 1940s and early 1950s as a way to program early digital computers more efficiently than with pure machine code. The first assemblers were developed for machines such as the IBM 701 and the UNIVAC I. These early assemblers used simple mnemonics and provided basic symbolic addressing.

In the 1960s and 1970s, assembly languages became more sophisticated, with macro-processing capabilities, conditional assembly, and support for complex data structures. The rise of microprocessors in the 1970s (e.g., Intel 8080, MOS 6502, Zilog Z80) brought assembly language to hobbyists and small systems, including early personal computers and game consoles.

As high-level languages grew in popularity for most applications, assembly remained essential for systems programming, optimization, and hardware interaction. Today, while many programmers work primarily in higher-level languages, assembly is still taught as a way to understand computer architecture and is used in critical performance and security contexts (e.g., writing exploits, reverse engineering, and real-time systems).

'See also: Machine code, Compiler, Low-level programming language, Computer architecture