Basic Elements of Assembly Language
Assembly language is a low-level programming language that provides direct control over a
computer's hardware. It serves as a bridge between high-level languages like C and the machine
code understood by the processor. In this essay, we will discuss the fundamental elements of
assembly language, focusing on Intel-based processors as described in Assembly Language for
Intel-Based Computers by Kip R. Irvine.
1. Program Structure in Assembly Language
An assembly language program follows a structured format that includes:
1. Data Section: Defines variables and constants.
2. Code Section: Contains executable instructions.
3. Stack Section: Used for temporary storage and function calls.
Example:
2. Basic Syntax Elements
a) Instructions and Operands
Assembly instructions consist of an operation (opcode) followed by operands.
The opcode specifies the operation.
The operands provide the data to be manipulated.
Example:
b) Registers
Intel processors provide general-purpose registers, which are used to store temporary data and
control program execution:
AX, BX, CX, DX (16-bit registers)
EAX, EBX, ECX, EDX (Extended 32-bit registers)
RAX, RBX, RCX, RDX (64-bit registers in x86-64)
Example:
c) Directives
Directives are instructions that tell the assembler how to process the program. Common
directives include:
DB (Define Byte): Reserves storage for a byte.
DW (Define Word): Reserves storage for a word (16-bit).
DD (Define Doubleword): Reserves storage for a doubleword (32-bit).
EQU (Equate): Assigns a constant value.
Example:
3. Memory Addressing Modes
Memory addressing modes define how operands are accessed in memory. Common addressing
modes include:
1. Immediate Addressing: The operand is a constant value.
2. Register Addressing: The operand is in a register.
3. Direct Addressing: The operand is stored in memory at a specific address.
4. Indirect Addressing: The operand is at an address stored in a register.
4. Control Flow Instructions
Assembly language includes instructions for decision-making and loops:
Jump Instructions (JMP, JZ, JNZ, etc.): Used for branching.
Loop Instructions (LOOP, LOOPZ, etc.): Used for iterations.
Example:
5. Input/Output Operations
Interacting with the user or other devices requires input/output instructions. In DOS and Linux
assembly, INT (interrupt) instructions are used.