Ekt 225 Microcontroller I: 8051 Assembly Language Programming

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 24

EKT 225 MICROCONTROLLER I

CHAPTER 2
8051 ASSEMBLY
LANGUAGE
PROGRAMMING

1
OBJECTIVES
 List the registers of the 8051 microcontroller
 Manipulate data using the registers and MOV instructions
 Code simple 8051 Assembly language instructions
 Assemble and run an 8051 program
 Describe the sequence of events that occur upon 8051 power-up
 Examine programs in ROM code of the 8051
 Explain the ROM memory map of the 8051
 Detail the execution of 8051 Assembly language instructions
 Describe 8051 data types
 Explain the purpose of the PSW (program status word) register
 Discuss RAM memory space allocation in the 8051
 Diagram the use of the stack in the 8051

2
SECTION 2.1: INSIDE THE 8051

 Registers

Figure 2–1a
Some 8-bit Registers of the 8051
3
SECTION 2.1: INSIDE THE 8051

 Registers

Figure 2–1b Some 8051 16-bit Registers

4
SECTION 2.1: INSIDE THE 8051

 most widely used registers are A, B, R0,


R1, R2, R3, R4, R5, R6, R7, DPTR and PC
 all registers are 8-bits, except DPTR and
the program counter which are 16 bit
 register A is used for all arithmetic and
logic instructions
 simple instructions MOV and ADD

5
SECTION 2.1: INSIDE THE 8051

 MOV instruction
– MOV destination, source ;copy source to destination

MOV A,#55H ;load value 55H into reg A


MOV R0,A ;copy contents of A into R0 (A=R0=55H)
MOV R1,A ;copy contents of A into R1 (A=R0=R1=55H)
MOV R2,A ;copy contents of A into R2 (A=R0=R1=R2=55H)
MOV R3,#95H ;load value 95H into R3 (R3=95H)
MOV A,R3 ;copy contents of R3 into A (A=R3=95H)

6
SECTION 2.1: INSIDE THE 8051

 ADD instruction
– ADD A, source ;ADD the source operand
;to the accumulator

MOV A,#25H ;load 25H into A


MOV R2,#34H ;load 34H into R2
ADD A,R2 ;add R2 to accumulator

Executing the program above results in A = 59H

7
SECTION 2.2: INTRODUCTION TO 8051
ASSEMBLY PROGRAMMING

 Structure of Assembly language

ORG 0H ;start (origin) at 0


MOV R5,#25H ;load 25H into R5
MOV R7,#34H ;load 34H into R7
MOV A,#0 ;load 0 into A
ADD A,R5 ;add contents of R5 to A
;now A = A + R5
ADD A,R7 ;add contents of R7 to A
;now A = A + R7
ADD A, #12H ;add to A value 12H
;now A = A + 12H
HERE: SJMP HERE ;stay in this loop
END ;end of asm source file

Program 2-1: Sample of an Assembly Language Program

8
SECTION 2.3: ASSEMBLING AND
RUNNING AN 8051 PROGRAM

 An Assembly language instruction


consists of four fields:

[label : ] mnemonic [operands] [;comment]

9
SECTION 2.3: ASSEMBLING AND
RUNNING AN 8051 PROGRAM

Figure 2–2 Steps to Create a Program


10
SECTION 2.3: ASSEMBLING AND
RUNNING AN 8051 PROGRAM

 More about "a51" and "obj" files


– "asm" file is source file and for this reason some
assemblers require that this file have the “a51"
extension
– this file is created with an editor such as Windows
Notepad or uVision editor
– uVision assembler converts the a51 assembly language
instructions into machine language and provides the
obj file
– assembler also produces the Ist file

11
SECTION 2.3: ASSEMBLING AND
RUNNING AN 8051 PROGRAM

 Ist file

– lst file is useful to the programmer because it lists all the


opcodes and addresses as well as errors that the assembler
detected
– uVision assumes that the list file is not wanted unless you
indicate that you want to produce it
– file can be accessed by an editor such as Note Pad and
displayed on the monitor or sent to the printer to produce a
hard copy
– programmer uses the list file to find syntax errors
– only after fixing all the errors indicated in the lst file that the
obj file is ready to be input to the linker program

12
SECTION 2.4: THE PROGRAM COUNTER
AND ROM SPACE IN THE 8051

 Program counter in the 8051


– 16 bits wide
– can access program addresses 0000 to FFFFH
– total of 64K bytes of code

13
SECTION 2.4: THE PROGRAM COUNTER
AND ROM SPACE IN THE 8051

 Where the 8051 wakes up when it is


powered up:
– wakes up at memory address 0000 when it is
powered up
– first opcode must be stored at ROM address
0000H

14
SECTION 2.4: THE PROGRAM COUNTER
AND ROM SPACE IN THE 8051

 Placing code in program ROM


– the opcode and operand are placed in ROM
locations starting at memory 0000

15
SECTION 2.4: THE PROGRAM COUNTER
AND ROM SPACE IN THE 8051

 ROM memory map in the 8051 family

16 Figure 2–3 8051 On-Chip ROM Address Range


SECTION 2.5: 8051 DATA TYPES AND
DIRECTIVES

 8051 data type and directives


– DB (define byte)
– ORG (origin)
– EQU (equate)
– END directive

17
SECTION 2.5: 8051 DATA TYPES AND
DIRECTIVES

 Rules for labels in Assembly language


– each label name must be unique
– first character must be alphabetic
– reserved words must not be used as labels

18
SECTION 2.6: 8051 FLAG BITS AND
THE PSW REGISTER

 PSW (program status word) register

19 Figure 2–4 Bits of the PSW Register


SECTION 2.6: 8051 FLAG BITS AND
THE PSW REGISTER

20 Table 2–1 Instructions That Affect Flag Bits


SECTION 2.7: 8051 REGISTER BANKS
AND STACK

 RAM memory space allocation in the 8051

Figure 2–5
RAM Allocation in the 8051
21
SECTION 2.7: 8051 REGISTER BANKS
AND STACK

 Register banks in the 8051

Figure 2–6 8051 Register Banks and their RAM Addresses


22
SECTION 2.7: 8051 REGISTER BANKS
AND STACK

 How to switch register banks

Table 2–2 PSW Bits Bank Selection

23
SECTION 2.7: 8051 REGISTER BANKS
AND STACK

 Stack in the 8051


– section of RAM used to store information
temporarily
– could be data or an address
– CPU needs this storage area since there are
only a limited number of registers

24

You might also like