Skip to main content
Assembly Language Programming:
1. Introduction
Prepared by:
Md. Jahidul Islam (Lecturer, Dept. of CSE, UIU.)
Special Thanks to:
Muhammad Tasnim Mohiuddin (Lecturer, Dept. of CSE, UIU.)
April 2015.
Department of Computer Science & Engineering (CSE), United International University (UIU).
Programming Languages
1) Machine Language
2) Assembly Language (Low Level Language)
3) High Level Languages
April 2015.
Department of Computer Science & Engineering (CSE), United International University (UIU).
Simple Computer Model
April 2015.
Department of Computer Science & Engineering (CSE), United International University (UIU).
Inside the CPU
April 2015.
Department of Computer Science & Engineering (CSE), United International University (UIU).
CPU Registers
• General purpose registers
• Segment registers
• Instruction Pointer
• Flags register
• Special purpose registers
oDebug registers
oMachine Control registers
April 2015.
Department of Computer Science & Engineering (CSE), United International University (UIU).
6
 AX (accumulator register):
 Stores operands for arithmetic & data transfer instructions.
 BX Register (base register):
 Holds the starting base address of a memory within a data segment.

CX Register (counter register):
 Primarily used in loop instruction to store loop counter.

DX Register (data register)
 Used to contain I/O port address for I/O instruction.
General Purpose Registers
7
General Purpose Registers (contd.)
 Each of these 16-bit registers are further subdivided into two 8-bit
registers.
AH AL
BH BL
CH CL
DH DL
AX
BX
CX
DX
8
Memory Segmentation
 Data Segment
 contains variable definitions
 declared by .DATA
 Stack segment
 used to store the stack
 declared by .STACK size
 default stack size is 1KB.
 Code segment
 contains program’s instructions
 declared by .CODE
Extra segment

DS
CS
SS
ES
64 KB
64 KB
64 KB
8086 Memory
64 KB
Flag Register
9
 Flag register determines the current status of the microprocessor.
 It is modified automatically by CPU after mathematical operations.
 This allows to determine the type of the result.
 8086 has 16-bit Flag register.
 There are two kinds of flags: Status Flags and Control Flags
Flag Register (contd.)
10
Status Flags Control Flags
Carry Flag (CF) Trap Flag
Auxiliary-carry Flag (AF) Interrupt Flag
Zero Flag (ZF) Directional Flag
Sign Flag (SF)
Parity Flag (PF)
Overflow Flag (OF)
Flag Register (contd.)
11
Flag Purpose
Carry (CF) CF = 1 if there is a carry out from the MSB on addition or there
is a Borrow into the MSB on subtraction.
Parity (PF) PF=1 if the low byte of a result has an even number of one bits
(even parity).
Auxiliary (AF) Holds the carry (half–carry) after addition or borrow after
subtraction between bit positions 3 and 4 of the result
(for example, in BCD addition or subtraction.)
Zero (ZF) Shows the result of the arithmetic or logic operation.
Z=1; result is zero. Z=0; The result is 0
Sign (SF) Holds the sign of the result after an arithmetic/logic instruction
execution. SF=1 if the MSB of a result is 1.
Flag Register (contd.)
12
Flag Purpose
Trap (TF) Enables the trapping through an on-chip debugging feature.
Interrupt (IF)
Controls the operation of the INTR (interrupt request)
IF = 0 if the INTR pin is disabled
IF = 1, if the INTR pin isenabled.
Direction (DF)
Selects either the increment or decrement mode for DI
and /or SI registers during the string instructions.
Overflow (OF)
Overflow occurs when signed numbers are added or
subtracted. An overflow indicates the result has exceeded
the capacity of the machine.
13
 Stack Pointer (SP)
 A 16-bit register pointing to program stack
 Base Pointer (BP)
 A 16-bit register used to access data in stack segment
 Usually used for based indexed or register indirect addressing
 Source Index (SI) & Destination Index (DI)
 16-bit registers
 Used to point to memory locations in the data segment
Pointer and Index Registers
Any Questions?
Thank You
April ,2015.
Department of Computer Science & Engineering (CSE), United International University (UIU).