Intro To 8051 Assembly Programming
Intro To 8051 Assembly Programming
Intro To 8051 Assembly Programming
Class 2: Objective
l l l l l l
8051 internal architecture Register Set Instruction Set Memory Map Intro to Stack, SFRs Assembly language programming
21-Jan-03
8051 Architecture
l
Programmers View
Register Set Instruction Set Memory map Pinout Timing characteristics Current / Voltage requirements
21-Jan-03
Registers
A, B, R0 to R7 : 8 bit registers DPTR : [DPH:DPL] 16 bit register PC : Program Counter (Instruction Ptr) 16bits 4 sets of register bank R0-R7 Stack pointer SP PSW : Program Status Word (a.k.a Flags) SFR : Special Function Registers
l
21-Jan-03
; comment
If the first figure in a hex quantity is a letter (AF) then a 0 must precede it
21-Jan-03
Commonly used for moving data around, logic and arithmetic operations on 8bit data Examples
mov A, R0 push ACC mov A, #10 mov B, A mov A, 10 mov A, 0xFF mov A, 0FFH ;copy contents of R0 to A ;store A onto stack ;A 10 ;B A ;A mem(10) ;A 0xFF ;same as above
21-Jan-03
Commonly used as a temporary register, much like a 9th R register Used by two opcodes
B register holds the second operand and will hold part of the result
21-Jan-03
Register Set R0 to R7
l l l l l l
Set of 8 registers R0, R1, R7, each 8 bit wide Widely used as temporary registers Available in 4 banks (effectively 4x8 registers) Bank is chosen by setting RS1:RS0 bits in PSW Default bank (at power up) is the bank0 Examples
mov R0, A mov A, R0 mov R1, #45 ;R0 A ;A R0 ;R1 45
21-Jan-03
Registers - DPTR
l l l
16 bit register, called Data Pointer Used by commands that access external memory Also used for storing 16bit values
mov DPTR, #data16 movx A, @DPTR ; setup DPTR with 16bit ext address ; copy mem[DPTR] to A
21-Jan-03
Registers - PC
l l l l
PC is the program counter Referred to as the Instruction Pointer (IP) in other microprocessors PC points to the next program instruction always After fetching an instruction (1 or multi byte), PC is automatically incremented to point to the next instruction
21-Jan-03
10
Registers - SP
l l
SP is the stack pointer SP points to the last used location of the stack
push will first increment SP and then copy data pop will first copy data and then decrement SP
l l l l
In 8051, stack grows upwards (from low mem to high mem) and can be in the internal RAM only On power-up, SP is at 07H Register banks 2,3,4 (08H to 1FH) is the default stack area Stack can be relocated by setting SP to the upper memory area in 30H to 7FH
21-Jan-03
Registers - PSW
l l l l
Program Status Word is a bit addressable 8bit register that has all the flags CY - Carry Flag
Set whenever there is a carry in an arithmetic operation Carry from D3 to D4. Used for BCD operation P=1 if A has odd number of 1s Even parity Set if any arithmetic operation causes an overflow
P - Parity Flag
OV - Overflow Flag
21-Jan-03
12
Flags - Illustration
l
Addition example
38 + 2F --------67 --------CY = 0 AC = 1 P =1
21-Jan-03
13
Registers - SFRs
l
l l
Control the operation of on-board peripherals Special Function Registers at direct addresses 80H to FFH 8051 Clones may have additional SFRs All registers have an address
21-Jan-03
14
Upto 64K long (some maybe onboard) (0x0000 to 0xFFFF) PSEN is the controlling signal Can store Program only (Read only) Upto 64K long (0x0000 to 0xFFFF) RD/WR are the controlling signals Can store data only (Read and Write) 128 bytes 0x00 to 0x7F (includes register banks) SFRs 0x80 to 0xFF (not all available)
Data Memory
Internal RAM
21-Jan-03
15
l l l
Internal ROM is vendor dependant On power-up PC starts at 0000H in ROM space Clones may have internal memory that may be used as both Code+Data
21-Jan-03
16
Data Transfer
Move/Copy data from one location to another mov, movc, movx, push, pop, xch, xchd Perform logic operations on data anl, orl, xrl, clr, cpl, rl, rlc, rr, rrc, swap Perform arithmetic operations on data add, addc, subb, inc, dec, mul, div Control the program flow (jumps, subroutine calls) jmp, ajmp, ljmp, sjmp, jc, jnc, jb, jnb, jbc, jz, jnz, acall, lcall, cjne, djnz, ret, reti
17
Logical
Arithmetic
Program control
NOP
21-Jan-03
Dont have to remember all the instructions Dont have to remember all possible cases
l l
Write down the operation needed in simple English Lookup the instruction set to see which (combo) of instructions will do the job
21-Jan-03
18
Assembly Opcode
l
Can be 1, 2 or 3 bytes long 8051 Family Programmers Guide has a list 2 bytes, 1 cycles 0111 0100 data8 mov A, 0xAA 0111 0100 1010 10101 74 AA a10 a9 a8 1 0001 a7 a6 a5 a4 a3 a2 a1 a0 acall 0x557 101 1 0001 0101 0111 B1 57
21-Jan-03
19
Assembler Directives
l
: origin, start assembling at xxxxH : define a constant : define byte, defines allocation of storage
DB
l l
END
21-Jan-03
Create the assembly source file test.asm Assemble the asm file
C:\> as51 test.asm Assembler produces error and code list in test.lst If no errors, assembler produces .obj file
l l l l
Link the .obj files to produce an .abs file Create hex file from the .abs file Most assemblers directly produce the .hex file Download the .hex file onto the board or burn it into an EPROM.
21-Jan-03
21
Assembly Example #1
l
Program to fill up the first 4 registers in the register bank with some numbers and find their sum
Std 8051 device 2K on-chip ROM running a monitor program 32K external RAM at address 0x0000 to 0x7FFF This RAM is both code and data First 0x30 locations in external RAM is dedicated for the Interrupt Vector Table (IVT)
Start:
clearA: Addup:
Done:
ORG 0x30 ;skip the IVT area mov R0, #10 mov R1, #0A5H mov R2, #1 mov R3, #0x20 mov A, #0 ;now A = 0 add A, R0 ;now A = A + R0 add A, R1 add A, R2 add A, R3 mov R4, A ;store sum in R4 mov DPTR, #7FFF movx @DPTR, A ;store in ext. mem sjmp done ;loop here forever END
21-Jan-03
22
Class 2 Review
l l l l l l l
What are the different views/models of a uP ? What are the registers available in the 8051 ? What are the functions of the 8051 registers ? What is stack, PC, SFR, PSW/Flags ? What is an instruction set ? What is a memory map ? Why is it needed ? What is an assembly language program ? How does it look ?
21-Jan-03
23