Title: Assembly Language
1 Assembly Language Lecture 3
2- Lecture Outline
- Named Constants
- Registers in 8086
- Instruction Types
- MOV, XCHG, LEA, ADD, SUB, INC, DEC, NEG
3Named Constants - EQU (Equates)
- To assign a name to a constant, we can use the
EQU pseudo-op. - Syntax
- name EQU constant
- Examples
- LF EQU 0AH
- MOV DL,0AH MOV DL,LF
- PROMPT EQU 'Any Thing'
- MSG DB 'Any Thing' MSG DB PROMPT
- Note no memory is allocated for EQU names.
-
4Registers
- Information inside the microprocessor is stored
in registers. - The registers are classified according to the
functions they perform - In general there are fourteen 16-bit
registers - Data registers
- There are four general data registers.
- They hold data for an operation.
- Address registers
- They are divided into segment, pointer, and
index registers. - They hold the address of an instruction or data.
- Status register
- It is called the FLAGS register.
- It keeps the current status of the processor.
5Registers
Data Registers
AX
BX
CX
DX
Segment Registers
CS
DS
SS
ES
Pointer and Index Registers
SI
DI
SP
BP
IP
FLAGS Register
6Data Registers AX, BX, CX, DX
- These four registers, in addition to being
general-purpose registers, - also perform special functions.
- The high and low bytes of these registers can be
accessed separately. - Ex. The high byte of AX is called AH, and the
low byte is called AL. - This arrangement gives us more registers to use
when dealing - with byte-size data.
7Data Registers AX, BX, CX, DX
- AX (Accumulator Register) is the preferred
register to use in arithmetic, logic, and data - transfer instructions
- BX (Base Register) also serves as an address
register. - CX (Count Register) Program loop constructions
are facilitated by the use of CX, which - serves as a loop counter.
- DX (Data Register) is used in multiplication and
division.
8Address Registers - Segment Registers CS, DS, SS,
ES
- Address registers store addresses of
instructions and data in memory. - These values are used by the processor to access
memory locations. - In the 8086 processor (16-bit processor)
- Memory is a collection of bytes, each memory
byte has an - address, starting with 0.
- The processor assigns a 20-bit physical address
to its memory - locations thus it is possible to address
2 1,048,576 bytes - (one megabyte) of memory.
- The bytes in memory have addresses 00000h to
FFFFFh.
20
9Address Registers - Segment Registers CS, DS, SS,
ES
- To keep track of the various program segments,
the 8086 is - equipped with four segments registers to hold
segment numbers - CS (Code Segment) contains the code segment
number. - DS (Data segment) contains the data segment
number. - SS (Stack Segment) contains the stack segment
number. - ES (Extra Segment) is used if a program needs
to access a - second data segment.
10Instruction Types
- Data transfer instructions
- Between registers.
- Between registers and memory.
- Between registers and I/O devices.
- Examples move, exchange, push, pop, input,
output. - Data manipulation instructions
- Arithmetic operations add, subtract.
- Logical operations and, or.
- Shift/Rotate shift right, shift left.
- Program control instructions
- Examples jump, call, loop, test, compare.
11Address Registers - Pointer and Index Registers
SP, BP, SI, DI
- SP (Stack Pointer) register is used in
conjunction with SS for - accessing the stack segment.
- BP (Base Pointer) register is used primarily to
access data on the - stack. However, unlike SP, BP can be used to
access data in the - other segments.
- SI (Source Index) register is used to point to
memory locations in - the data segment addressed by DS. By
incrementing the contents - of SI, we can easily access consecutive memory
locations. - DI (Destination Index) register performs the
same functions as SI. - There is a class of instructions, called
string operations, that use DI - to access memory locations addressed by ES.
12Address Registers - Instruction Pointer (IP)
- IP is updated each time an instruction is
executed so that it will point - to the next instruction.
- Unlike other registers, the IP cannot be
directly manipulated by an - instruction (i.e. The instruction cannot
contain IP as its operand).
13MOV Instruction
- The MOV (move) instruction is used to
- Transfer data between Registers.
- Transfer data between registers and memory
locations. - Move a number directly into a register or memory
location. - Syntax
- MOV destination, source
- Example
- MOV AX, WORD1
- MOV AX, BX
- MOV AX, 'A'
14Legal Combinations of operands for MOV
Destination Operand General
Segment Memory Source operand register
register location Constant General
register yes yes yes
no Segment register yes no yes
no Memory location yes yes no
no Constant yes no yes no
- Illegal MOV WORD1, WORD2 Legal MOV AX,
WORD2 - MOV
WORD1, AX - Illegal MOV DS, CS
Legal MOV AX, CS - MOV DS,
AX
15XCHG Instruction
- The XCHG (exchange) operation is used to
exchange the contents - of
- Two registers.
- A register and a memory location.
- Syntax
- XCHG destination, source
- Example
- XCHG AH, BL
- XCHG AX,WORD1
16Legal Combinations of operands for XCHG
Destination
Operand General Memory
Source Operand register location
General register yes
yes Memory location yes no
17LEA Instruction
- LEA (Load Effective Address) puts a copy of the
source offset - address into the destination.
- Syntax
- LEA destination, source
- Where destination is a general register and
source is a memory - location
- Example
- MSG DB 41H, 42H, 43H
- LEA DX, MSG
- puts the offset address of the variable MSG
into DX.
Data Definition Basic Instructions
17
18ADD and SUB Instructions
- The ADD (add) and SUB (subtract) instructions
are used to - Add/subtract the contents of
- Two registers.
- A register and a memory location.
- Add/subtract a number to/from a register or
memory location. - Syntax
- ADD destination, source SUB destination,
source - Examples
- ADD WORD1, AX SUB AX, DX
19Legal Combinations of operands for ADD SUB
Destination
Operand General Memory
Source Operand register location
General register yes
yes Memory location yes no Constant yes
yes
- Illegal ADD BYTE1, BYTE2
- Legal MOV AL, BYTE2
- ADD BYTE1, AL
20INC and DEC Instructions
- INC (increment) is used to add 1 to the contents
of a register or - memory location.
- DEC (decrement) is used to subtract 1 from a
register or memory - location.
- Syntax
- INC destination DEC destination
- Examples
- INC WORD1 DEC BYTE1
21NEG Instruction
- NEG is used to negate the contents of the
destination. - It does this by replacing the contents by its
twos complement. - Syntax
- NEG destination
- Examples
- NEG BX
Negative integers are stored using 2s complement
in the computer Example Want to store -5 in
memory 1s complement 11111010
1
11111011
22Type Agreement of Operands
- The operands of any two-operand instruction must
be of the same - type (i.e. Both bytes or words).
- Illegal MOV AX, BYTE1
- However, the assembler will accept both of the
following - MOV AH, 'A' moves 41H into AH
- MOV AX, 'A' moves 0041H into AX