You are on page 1of 24

8051 Addressing Modes

Upon completion of this chapter, you will be


able to
List the five addressing modes of the 8051.
Compare and contrast the addressing modes.
Code 8051 Assembly language instructions
using each addressing mode.
Access RAM using various addressing modes.
List the SFR addresses.

8051 Addressing Modes


What is meant by addressing modes?
Various ways of accessing data
which could be in a register, or in
memory, or be provided as an
immediate value.
The various addressing modes of a
microprocessor are determined when it
is designed and therefore cannot be
changed by the programmer.

8051 Addressing Modes


Five distinct addressing modes:
Immediate
Register
Direct
Register Indirect
Indexed

8051 Addressing Modes


Immediate Addressing Mode:
The source operand is a constant.
When the instruction is assembled, the
operand comes immediately after the
opcode.
The immediate date must be preceded by
the pound sign, #.
Can be used to load information into any
register, including the DPTR register.

8051 Addressing Modes


Immediate Addressing Mode:
MOV A, #25H
;load 25H into A
MOV R4, #62
;load decimal
value 62 into R4
MOV B, #40H
;load 40H into B
MOV DPTR, #4512H;DPTR = 4512H

8051 Addressing Modes


Immediate Addressing Mode:
Although the DPTR register is 16bit, it can also be accessed as two 8-bit
registers, DPH and DPL.
MOV DPTR, #4532H;DPTR = 4512H is
the same as
MOV DPL, #32H
MOV DPH, #45H

8051 Addressing Modes


Immediate Addressing Mode:
COUNT EQU 30

MOV
R4, #COUNT
(30=1EH)
MOV
DPTR, #MYDATA
ORG 200H
MYDATA: DB

America

;R4=1E
;DPTR=200H

8051 Addressing Modes


Register Addressing Mode:
Involves the use of registers to hold
the data to be manipulated.
MOV A, R0 ;copy the contents of R0 into A
MOV R2, A ;copy the contents of A into R2
ADD A, R5 ;add the contents of R5 to A
ADD A, R7 ;add the contents of R7 to A
MOV R6, A ;save accumulator in R6

8051 Addressing Modes


Register Addressing Mode:
Source and destination registers
must match in size.
Example:
MOV DPTR, A is invalid because the
source is a 8-bit register and the
destination is a 16-bit register.

8051 Addressing Modes


Register Addressing Mode:
Movement
of
data
between
accumulator and Rn (n=0 to 7) is possible.
Movement of data between Rn registers is
not allowed.
Example:
MOV R4, R7 is invalid.
Also, MOV DPTR, #25F5H can be written as
MOV R7, DPL
MOV R6, DPH

Review Questions

Can the programmer of a microcontroller


make up new addressing modes?
Show the instruction to load 1000 0000
(binary) into R3.
Why is the following invalid? MOV R2,
DPTR
DPTR is a 16-bit register that is also
accessible in low-byte and high-byte
formats. True or false?
Is the PC (Program Counter) also available
in low-byte and high-byte format?

8051 Addressing Modes


Direct Addressing Mode
The data is in a RAM location whose
address is known, and this address is given as a
part of the instruction. The # sign
distinguishes between direct and immediate
addressing mode.
RAM locations:
00-1FH: register banks and stack
20-2FH: bit addressable space to save single bit
data
30-7FH: place to save byte-sized data

RAM memory space allocation


in the 8051
7FH
Scratch pad RAM

30H
2FH
Bit-Addressable RAM
20H
1FH
18H
17H
10H
0FH
08H
07H
00H

Register Bank 3
Register Bank 2
Register Bank 1( Stack)
Register Bank 0

8051 Addressing Modes


Direct Addressing Mode
MOV R0, 40H; move content of RAM
location
40H in R0
MOV 56H, A ; move content of A to 56H
MOV R4, 7FH; move content of 7FH to
R4

8051 Addressing Modes


Direct Addressing Mode
RAM locations 0 to 7 are allocated to
bank 0 registers R0-R7. These registers
can be accessed in two ways.
MOV A, 4
; is same as
MOV A,R4 ; which means copy R4 into A
MOV A,2
; is same as
MOV A, R2; which means copy R2 into A

8051 Addressing Modes


Direct Addressing Mode
Although it is easier to use the
names R0-R7 than their memory
addresses, RAM locations 30H to 7FH
cannot be accessed in any way other
than their addresses since thy have no
names.

SFR and their addresses

SFR like A, B, PSW and DPTR have addresses


too.
Can be accessed by their names or by their
addresses.
Example:
MOV 0E0H, #55H ; is the same as
MOV A, #55H
; which means load 55H into
A
MOV 0E0H, R2
; is the same as
MOV A, R2
; which means copy R2 into A

SFR and their addresses


Have addresses between 80H and FFH,
since the addresses 00 to 7FH are
addresses of RAM memory inside the
8051.
Not all the address space is used by SPR.
The unused locations are reserved and
must not be used by the 8051 programmer.
Note:
Address value is limited to one byte, 00FFH in direct addressing mode.

8051 Addressing Modes


Register Indirect Addressing Mode
A register is used as a pointer to the data.
If the data is inside the CPU, only registers
R0 and R1 are used for this purpose.
R2-R7 cannot be used to hold the address
of an operand located in RAM when using
this mode.
When using R0 and R1 as pointers, they
must be preceded by the @ sign.

8051 Addressing Modes


Register Indirect Addressing Mode
Example:
MOV A, @R0; move contents of RAM
location
whose
address is held by R0 into A
MOV @R1, B; move contents of B into
RAM
location whose
address is held by R1

8051 Addressing Modes


Register Indirect Addressing Mode
Limitation:
Since R0 and R1 are the only
registers used (8-bit wide), their use is
limited to accessing any information in
the internal RAM. To access an
externally connected RAM or on-chip
ROM, we need a 16-bit pointer.

8051 Addressing Modes


Indexed Addressing Mode
Used to access data located in ROM space
of 8051.
The instruction used for this purpose is
MOVC A, @A+DPTR
Because the data is stored in ROM of 8051,
it uses MOVC instead of MOV.
The contents of A are added to the 16-bit
registers DPTR to form the 16-bit address of
the needed data.

Review Questions

The instruction MOV A, 40H uses ___


addressing mode. Why?
What address is assigned to register R2 of
bank 0?
What address is assigned to register R2 of
bank 2?
What address is assigned to register A?
Which registers are allowed to be used for
register indirect addressing mode if the date
is in on-chip RAM?

You might also like