Download R6 R5 R4 R3 R2 R1 R0 B A R7

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Suranaree University
Of Technology
มทส
Chapter 2
8051 Assembly
Language Programming
2002/2/27
2002 Anant Oonsivilai
Microcomputers and Microprocessors
Outlines
8051 registers
Manipulate data using registers & MOVE
instructions
Code simple assembly language instructions
Assemble and run a program
Sequence events upon power-up
Examine programs in ROM codes
ROM memory map
Execution of instructions
Data types
PSW register (Program Status Word)
RAM memory space
Stack
Register banks
2002 Anant Oonsivilai
8051 Registers
A
B
R0
D7
D6
D5
D4
D3
D2
D1
D0
8 bit Registers
R1
R2
DPTR
DPH
DPL
R3
R4
PC
PC (Program counter)
R5
R6
Figure2-1 (b): Some 8051 16 bit Registers
R7
Figure2-1 (a): Some 8 bit Registers of the 8051
2002 Anant Oonsivilai
MOV Instruction
MOV destination, source ; copy source to
dest.
MOV A,#55H
MOV R0,A
;load value 55H into reg. A
;copy contents of A into R0
;(now A=R0=55H)
MOV R1,A
;copy contents of A into R1
;(now A=R0=R1=55H)
MOV R2,A
;copy contents of A into R2
;(now A=R0=R1=R2=55H)
MOV R3,#95H ;load value 95H into R3
;(now R3=95H)
MOV A,R3
;copy contents of R3 into A
;now A=R3=95H
2002 Anant Oonsivilai
Notes on Programming
Value (proceeded with #) can be loaded
directly to registers A, B, or R0 – R7

MOV R5, #0F9H
If values 0 to F moved into an 8-bit register,
the rest assumed all zeros

MOV A, #5
A too large value causes an error

MOV A, #7F2H
2002 Anant Oonsivilai
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
;(A = A + R2)
2002 Anant Oonsivilai
Structure of Assembly
Language
ORG 0H
;start (origin) at location 0
MOV
MOV
MOV
ADD
R5,#25H
R7,#34H
A,#0
A,R5
ADD A,R7
ADD A,#12H
HERE: SJMP HERE
END
;load 25H into R5
;load 34H into R7
;load 0 into A
;add contents of R5 to A
;now A = A + R5
;add contents of R7 to A
;now A = A + R7
;add to A value 12H
;now A = A + 12H
;stay in this loop
;end of asm source file
Program 2-1:Sample of an Assembly Language Program
2002 Anant Oonsivilai
Steps to Create a Program
2002 Anant Oonsivilai
8051 Program Counter & ROM
Space
2002 Anant Oonsivilai
8051 Program Counter & ROM
Space
2002 Anant Oonsivilai
8051 Program Counter & ROM
Space
2002 Anant Oonsivilai
Execute a Program Byte by
Byte
1. PC=0000: opcode 7D fetched; 25
fetched; R5←25; PC+2
2. PC=0002: opcode 7F fetched; 34 fetched;
R7←34; PC+2
3. PC=0004; opcode 74 fetched; 0 fetched;
A←0; PC+2
4. PC=0006; opcode 2D fetched; A←A+R5;
PC+1
5. (Similarly…)
2002 Anant Oonsivilai
8051 On-Chip ROM Address
Range
2002 Anant Oonsivilai
Data Types & Directives
DATA1:
DATA2:
DATA3:
DATA4:
DATA6:
2002 Anant Oonsivilai
ORG 500H
DB
28
;DECIMAL (1C in Hex)
DB
00110101B
;BINARY (35 in Hex)
DB
39H
;HEX
ORG 510H
DB
“2591”
; ASCII NUMBERS
ORG 518H
DB “My name is Joe” ;ASCII CHARACTERS
PSW (Flag) Register
2002 Anant Oonsivilai
Instructions Affecting Flag Bits
2002 Anant Oonsivilai
ADD Instruction and PSW
2002 Anant Oonsivilai
ADD Instruction and PSW
2002 Anant Oonsivilai
ADD Instruction and PSW
2002 Anant Oonsivilai
8051 RAM Allocation
2002 Anant Oonsivilai
8051 Register Banks
2002 Anant Oonsivilai
Access RAM Locations Using Register
Names
2002 Anant Oonsivilai
Access RAM Locations Using
Addresses
2002 Anant Oonsivilai
Switch Register Banks
2002 Anant Oonsivilai
Switch Register Banks
2002 Anant Oonsivilai
Pushing onto Stack
2002 Anant Oonsivilai
Popping from Stack
2002 Anant Oonsivilai
Stack & Bank 1 Conflict
2002 Anant Oonsivilai
Stack & Bank 1 Conflict
2002 Anant Oonsivilai