Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Chapter 5 8051 Addressing Modes. 2 Sections 5.1 Immediate and register addressing modes 5.2 Accessing memory using various address modes.

Similar presentations


Presentation on theme: "1 Chapter 5 8051 Addressing Modes. 2 Sections 5.1 Immediate and register addressing modes 5.2 Accessing memory using various address modes."— Presentation transcript:

1 1 Chapter Addressing Modes

2 2 Sections 5.1 Immediate and register addressing modes 5.2 Accessing memory using various address modes

3 3 Objective 程式中的資料可能是放在 Register 中,或在 RAM 中某一位址上,或在 ROM 一塊特殊區域 放置資料,或者是指令中直接給予定值。 設計 8051 IC 的人們,提供這些存取資料的方 式。這些方式便叫作 Addressing Mode 。 – 中文稱為 “ 定址模式 ” :決定參數位址的模式 – 也許不同家的 Assembler 會有不同的指令寫法,但 基本上 addressing mode 都是一樣的。

4 4 Section 5.1 Immediate and Register Addressing Modes

5 5 What is Addressing Mode The CPU can access data in various ways. The data could be in a register, or in memory ( RAM or ROM ), or be provided as an immediate value. These various ways of accessing data are called addressing mode.

6 6 Addressing Mode in the 8051 Five addressing mode in the 8051 : 1. immediate 2. register 3. direct 4. register indirect 5. indexed

7 7 Addressing Mode 1 1. immediate - the operand is a constant MOV A,#01FH 2. register - the operand is in a register MOV A,R0 3. direct - access the data in the RAM with address MOV A,01FH 4. register indirect - the register holds the RAM address of the data MOV 5. indexed - for on-chip ROM access MOVC

8 8 Immediate Addressing Mode The source operand is a constant. When the instruction is assembled, the operand comes immediately after the opcode. The immediate vale can be loaded into any of the registers. –The immediate data must be preceded by the pound sign, ‘ # ’. –The immediate value is bounded by the size of register. –Please use the simulation tools to find the the machine code and the content of registers after execution. –See Tables 10 & 11 (page 418).

9 9 Example of Immediate Mode ( 1/2 ) Immediate Mode : MOV A,#25H ;A=25H C 3E MOV R4,#62 ;A=62=3EH MOV DPTR,#4521H Instruction Opcodes in Table 11 Hex code Mnemonic Operands Byte 74 MOV A, #data 2 7C MOV R4, #data 2 90 MOV DPTR, #data 3

10 10 Example of Immediate Mode ( 2/2 ) Immediate Mode : MOV A,#25H ;A=25H C 3E MOV R4,#62 ;A=62=3EH MOV DPTR,#4521H Instruction Opcodes in Table 10 Mnemonic Oscillator Period MOV A, #data 12 MOV Rn, #data 12 MOV DPTR, #data 24

11 11 EQU The EQU directive is used in the immediate addressing mode ORG 0H COUNT EQU C 1E MOV R4,#COUNT MOV DPTR,#MYDATA ORG 200H D MYDATA DB "America" END

12 12 Addressing Mode 2 1. immediate - the operand is a constant MOV A,#01FH 2. register - the operand is in a register MOV A,R0 3. direct - access the data in the RAM with address MOV A,01FH 4. register indirect - the register holds the RAM address of the data MOV 5. indexed - for on-chip ROM access MOVC

13 13 Register Addressing Mode Register addressing mode involves the use of registers to hold the data. –The source and destination registers must match in size. –The movement of data between Rn registers is not allowed. “MOV R4,R7” is illegal. You can find that the opcode in register addressing mode is short !

14 14 Example of Register Mode ( 1/2 ) Register Mode : E8 MOV A,R FA MOV R2,A D ADD A,R5 Instruction Opcodes in Table 11 Hex code Mnemonic Operands Byte E8 MOV A,R0 1 FA MOV R2,A 1 2D ADD A,R5 1

15 15 Example of Register Mode ( 2/2 ) Register Mode : E8 MOV A,R FA MOV R2,A D ADD A,R5 Instruction Opcodes in Table 10 Mnemonic Oscillator Period MOV A, Rn 12 MOV Rn, A 12 ADD A, Rn 12

16 16 Section 5.2 Accessing Memory Using Various Address Modes

17 17 Addressing Mode 3 1. immediate - the operand is a constant MOV A,#01FH 2. register - the operand is in a register MOV A,R0 3. direct - access the data in the RAM with address MOV A,01FH 4. register indirect - the register holds the RAM address of the data MOV 5. indexed - for on-chip ROM access MOVC

18 18 Direct Addressing Mode There are 128 bytes of RAM in the The RAM has been assigned address FH. –00-1FH : the register banks and stack –20-2FH : bit-addressable space to save single-bit data –30-7FH : scratch pad RAM In direct addressing mode, the data is in a RAM memory location whose address is known, and this address is given as a part of the instruction. –If an number begins without a pound sign, ‘ # ’, then Assembler think it as the RAM address.

19 19 Example of Direct Mode ( 1/2 ) Direct Mode : A8 40 MOV R0,40H F5 56 MOV 56H,A MOV DPTR,# MOV DPH,#45H 5 000A MOV DPL,#21H Instruction Opcodes Table 11 Hex code Mnemonic Operands Bytes A8 MOV R0, data addr. 2 F5 MOV data addr., A 2 75 MOV data addr., #data 3

20 20 Example of Direct Mode ( 2/2 ) Direct Mode : A8 40 MOV R0,40H F5 56 MOV 56H,A MOV DPTR,# MOV DPH,#45H 5 000A MOV DPL,#21H Instruction Opcodes Table 10 Mnemonic Oscillator Period MOV Rn, direct 24 MOV direct, A 12 MOV direct, #data 24

21 21 Register Bank ( 1/2 ) If we use register bank 0, then the following instructions 2 & 3 do the same works : C 64 MOV R4,# E5 04 MOV A,4 ;direct mode EC MOV A,R4 ;register mode –Initially, the 8051 uses the register bank 0. –R4 has RAM address 04H.

22 22 Register Bank ( 2/2 ) If we use register bank 1, then the following instructions 3 & 4 do the different works : D2 D3 SETB RS0 ;RS0= C 64 MOV R4,# E5 04 MOV A,4 ;A= EC MOV A,R4 ;A=100=64H –RS1=PSW.4=0 & RS0=PSW.3=1  register bank 0 –Initially, the content of RAM is 00H. –R4 has RAM address 0CH. –RAM 0CH has the value 100.

23 23 SFR ( Special Function Register ) There are many special functions registers in the We call them SFR. –Example : A, B, PSW, and DPTR The 8051 Assembler provides that the SFR can be accessed by their name or by their addresses. See Table 5-1 for SFR addresses The SFR have addresses between 80H and FFH. Not all the address space of 80 to FF is used by the SFR.

24 24 Table 5-1: Special Function Register (SFR) Addresses ( 1/2 ) SymbolNameAddress ACC*Accumulator0E0H B*B register0F0H PSW*Program status word0D0H SPStack pointer81H DOTRData pointer 2 bytes DPLLow byte82H DPHHigh byte83H P0*Port 080H P1*Port 190H P2*Port 20A0H P3*Port 30B0H IP*Interrupt priority control0B8H IE*Interrupt enable control0A8H TMODTimer/counter mode control89H

25 25 Table 5-1: Special Function Register (SFR) Addresses ( 2/2 ) SymbolNameAddress TCON*Timer/counter control88H T2CON*Timer/counter 2 control0C8H T2MODTimer/counter mode control0C9H TH0Timer/counter 0 high byte8CH TL0Timer/counter 0 low byte8AH TH1Timer/counter 1 high byte8DH TL1Timer/counter 1 low byte8BH TH2Timer/counter 2 high byte0CDH TL2Timer/counter 2 low byte0CCH RCAP2HT/C 2 capture register high byte0CBH RCAP2LT/C 2 capture register low byte0CAH SCON*Serial control98H SBUFSerial data buffer99H PCONPower control87H *bit addressable (discussed further in Chapter 8)

26 26 ACC and Its Address ACC has SFR address 0E0H E0 55 MOV 0E0H,#55H MOV A,#55H D2 E1 SETB A.1 –Compare their code size and execution time. “ACC * ”, * means this register is bit addressable. You can access each bit of ACC independently. A.6A.5A.4A.3A.2A.1 A.7 A.0 ACC SFC addr. 0E7 0E6 0E5 0E4 0E3 0E2 0E1 0E0

27 27 Example 5-1 Write code to send 55H to ports P1 and P2, using (a) their names (b) their addresses. Solution: (a) MOV A,#55H ;A=55H MOV P1,A ;P1=55H MOV P2,A ;P2=55H (b) From Table 5-1, P1 address = 80H; P2 address = A0H MOV A,#55H ;A=55H MOV 80H,A ;P1=55H MOV 0A0H,A ;P2=55H

28 28 Stack Another major use of direct addressing mode is the stack. In the 8051 family, only direct addressing mode is allowed for pushing onto the stack.

29 29 Example 5-2 ( 1/2 ) Show the code to push R5, R6, and A onto the stack and then pop them back them into R2, R3, and B. We want : B = A, R2 = R6, and R3 = R5. Solution: PUSH 05 ;push R5 onto stack PUSH 06 ;push R6 onto stack PUSH 0E0H ;push register A onto stack POP 0F0H ;pop top of stack into register B POP 02 ;pop top of stack into R2 POP 03 ;pop top of stack into R3

30 30 Example 5-2 ( 1/2 ) Different assembler provide different instruction for the stack. In our simulation tools, they are the same : C0 05 PUSH R C0 06 PUSH R C0 E0 PUSH A C0 05 PUSH C0 06 PUSH C0 E0 PUSH 0E0H

31 31 Addressing Mode 4 1. immediate - the operand is a constant MOV A,#01FH 2. register - the operand is in a register MOV A,R0 3. direct - access the data in the RAM with address MOV A,01FH 4. register indirect - the register holds the RAM address of the data MOV 5. indexed - for on-chip ROM access MOVC

32 32 Register Indirect Addressing Mode In the register indirect addressing mode, a register is used as a pointer to the data. –That is, this register holds the RAM address of the data. Only registers R0 and R1 can be used to hold the address of an operand located in RA. –Usually, R0 and R1 are denoted by Ri. When R0 and R1 hold the addresses of RAM locations, they must be preceded by the sign.

33 33 Example of Register Indirect Mode ( 1/2 ) Register Indirect Mode : MOV 20H,# MOV R0,#20H E6 MOV R0 20H A 64H RAM 1E 00 1F : 1. put 64H to addr. 20H 2. let R0 be the data address 3. copy the content in addr. R0=20H to A

34 34 Example of Register Indirect Mode ( 2/2 ) Register Indirect Mode : F0 80 MOV B,#080H MOV R1,#31H A7 F0 R1 31H B 80H RAM 2F : 1. let B=80H 2. let R0 be the data address 3. copy B to the RAM location with addr. R1=31H

35 35 Example 5-3 (1/3) Write a program to copy the value 55H into RAM memory locations 40H to 45H using (a) direct addressing mode, (b) register indirect addressing mode without a loop, (c) with a loop. Solution of (a) : MOV A,#55H MOV 40H,A MOV 41H,A MOV 42H,A MOV 43H,A MOV 44H,A A 55H RAM copy A to the RAM location of addr. 43H

36 36 Example 5-3 (2/3) Solution of (b) register indirect addressing mode without a loop MOV A,#55H ;load A with value 55H MOV R0,#40H ;load the pointer. R0=40H ;copy A to RAM location where R0 ; points to INC R0 ;increment pointer. Now R0=41H INC R0 ;R0=42H INC R0 ;R0=43H INC R0 R0 43H A 55H RAM

37 37 Example 5-3 (3/3) Solution of (c) with a loop: MOV A,#55H ;A=55H MOV R0,#40H ;load pointer. R0=40H, MOV R2,#05H ;load counter, R2=5 AGAIN: ;copy 55 to RAM location ; R0 points to INC R0 ;increment R0 pointer DJNZ R2,AGAIN ;loop until counter = 0

38 38 Advantage of Register Indirect Addressing Mode One of the advantages of register indirect addressing mode is that it makes accessing data dynamic rather than static. Solution (c) in Example 5-3 is the most efficient and is possible only because of register indirect addressing mode. –Looping is not possible in direct addressing mode. –See Examples 5-4, 5-5, too. Their use is limited to accessing any information in the internal RAM.

39 39 Example 5-4 Write a program to clear 16 RAM locations starting at RAM address 60H. Solution: CLR A ;A=0 MOV R1,#60H ;load pointer. R1=60H MOV R7,#16 ;load counter, R7=10H AGAIN: ;clear RAM location R1 ; points to INC R1 ;increment R1 pointer DJNZ R7,AGAIN ;loop until counter = 0

40 40 Example 5-5 Write a program to copy a block of 10 bytes of data from RAM locations starting at 35H to RAM locations starting at 60H. Solution: MOV R0,#35H ;source pointer MOV R1,#60H ;destination pointer MOV R3,#10 ;counter BACK: MOV ;get a byte from source ;copy it to destination INC R0 ;increment source pointer INC R1 ;increment destination ; pointer DJNZ R3,BACK ;keep doing it 10 times

41 41 Addressing Mode 5 1. immediate - the operand is a constant MOV A,#01FH 2. register - the operand is in a register MOV A,R0 3. direct - access the data in the RAM with address MOV A,01FH 4. register indirect - the register holds the RAM address of the data MOV 5. indexed - for on-chip ROM access MOVC

42 42 Indexed Addressing Mode Indexed addressing mode is widely used in accessing data elements of look-up table entries located in the program ROM space of the –A look-up table is a ROM block where the data is given previously (then you can access it frequently). –The instruction used for this purpose is MOVC. DPTR can be used to access memory externally connected to the See Chapter 14. Another register used in indexed addressing mode is the PC. See Appendix A.

43 43 MOVC Copy the source operand to the destination operand. MOVC –The “C” means code (program code in on-chip ROM). –A+DPTR is the address of the data element stored in on-chop ROM. –Put the ROM value to A.

44 44 Example of MOVC Register Indexed addressing Mode : MOV DPTR,#MYDATA E4 CLR A MOVC F8 MOV R0,A FE HERE: SJMP HERE MYDATA: DB "USA“ –DPTR=#MYDATA=0008H –A+DPTR=0008H ROM E4 : A 41 A 55H

45 45 Example 5-6 (1/2) In this program, assume that the word “USA” is burned into ROM locations starting at 200H, and that the program is burned into ROM locations starting at 0. Analyze how the program works and state where “USA” is stored after this program is run. Solution: ROM E4 : A 55H A+DPTR= 0200H DPTR 02H 00H R0 55H USAUSA R1 00H R2 00H

46 46 Example 5-6 (2/2) ORG 0000H ;burn into ROM from 0 MOV DPTR,#200H ;DPTR=200H CLR A ;clear A(A=0) MOVC ;get the char space MOV R0,A ;save it in R0 INC DPTR ;DPTR=201 CLR A ;clear A(A=0) MOVC ;get the next char MOV R1,A ;save it in R1 INC DPTR ;DPTR=202 CLR A ;clear A(A=0) MOVC ;get the next char MOV R2,A ;save it in R2 HERE:SJMP HERE ;stay here ORG 200H MYDATA: DB “USA” END ;end of program

47 47 Example 5-7 (1/2) Assuming that ROM space starting at 250H contains “America”, write a program to transfer the bytes into RAM locations starting at 40H. Solution of (a) This method uses a counter : ORG 0000 MOV DPTR,#MYDATA ;Initialization MOV R0,#40H MOV R2,#7 BACK: CLR A MOVC INC DPTR INC R0 DJNZ R2,BACK HERE: SJMP HERE ORG 250H MYDATA: DB “AMERICA” END ROM : D AMERICANAMERICAN RAM D E A 41 R0 40 DPTR 02 50

48 48 Example 5-7 (2/2) Solution of (b) This method uses null char for end of string : ORG 0000 MOV DPTR,#MYDATA MOV R0,#40H ;No “MOV R2,#7” BACK: CLR A MOVC JZ HERE ;if A=0 ;leave the block INC DPTR INC R0 SJMP BACK HERE: SJMP HERE ORG 250H MYDATA: DB “AMERICA”,0 ;notice null char ;for end of string END

49 49 Example 5-8 Write a program to get the x value from P1 and send x 2 to P2, continuously. Solution: ORG 0 MOV DPTR,#XSQR_TABLE MOV A,#0FFH MOV P1,A ;P1 as INPUT PORT BACK: MOV A,P1 ;GET X MOVC ;Count the addr. MOV P2,A ;Issue it to P2 SJMP BACK ORG 300H XSQR_TABLE: DB 0,1,4,9,16,25,36,49,64,81 END

50 50 Example 5-9 Answer the following questions for Example 5-8. (a) Indicate the content of ROM locations H. (b) At what ROM location is the square of 6, and what value should be there? (c) Assume that P1 has a value of 9: what value is at P2 (in binary)? Solution: (a) All values are in hex. 300 = (00) 301 = (01) 302 = (04) 303 = (09) 304 = (10) 4×4=16=10H 305 = (19) 5×5=25=19H 306 = (24) 6×6=36=24H 307 = (31) 308 = (40) 309 = (51) (b) ROM Addr.=306H; the value 24H=36 (c) P2 = B=51H=81 in decimal.

51 51 You are able to List the 5 addressing modes of the 8051 microcontroller Contrast and compare the addressing modes Code 8051 Assembly language instructions using each addressing mode List the SFR ( special function registers ) address Discuss how to access the SFR Manipulate the stack using direct addressing mode Code 8051 instructions to manipulate a look-up table

52 52 Homework Chapter 5 Problems : 2,3,8,11,12,13 Note: –Please write and compile the program of Problems 8,11,12,13.


Download ppt "1 Chapter 5 8051 Addressing Modes. 2 Sections 5.1 Immediate and register addressing modes 5.2 Accessing memory using various address modes."

Similar presentations


Ads by Google