Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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