1 / 70

M68k Addressing Modes

M68k Addressing Modes. ECE 511: Digital System & Microprocessor. What we will learn in this session:. M68k addressing modes: How to access data: In registers. In memory. Available addressing modes. When to use what. Introduction. Introduction.

kellan
Télécharger la présentation

M68k Addressing Modes

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. M68k Addressing Modes ECE 511: Digital System & Microprocessor

  2. What we will learn in this session: • M68k addressing modes: • How to access data: • In registers. • In memory. • Available addressing modes. • When to use what.

  3. Introduction

  4. Introduction • All CPU instructions have similar requirements: • Action - What action should it perform? • Source - Where is the data that it is supposed to process? • Target - Where should it put the results? • Action is done using instructions. • Addressing modes identify source and target.

  5. Addressing Modes • Methods to access data inside: • CPU registers. • Memory. • M68k allows 14 addressing modes: • Direct reference. • Indirect reference. • Addressing modes allow flexible & effective programs design.

  6. Address Register Indirect ARI + PostIncrement Register Addressing Mode ARI + Predecrement ARI + Displacement Data Register Direct ARI + Index Address Register Direct Absolute Short Address Absolute Long Address AM PC with Displacement PC with Index Immediate Data Mem. Addressing Mode Quick Immediate Data Implied Addressing

  7. Register Addressing Modes

  8. Register Addressing Modes • Modes to access registers in M68k: • Address Register. • Data Register. • Consists of 2 methods: • Data Register Direct (DRD). • Address Register Direct (ARD).

  9. DRD (Data Register Direct) • Used to access data registers. • Represented to as Dn: • D represents data register. • n is register number. • From D0 to D7.

  10. DRD Example • MOVE.B D0,D1 • ADD.W D4,(A0) • MULU D5,D7

  11. ARD (Address Register Direct) • Used to access address registers. • Referred to as An: • A represents address register. • n is register number. • From A0 to A7. • A7 = stack pointer.

  12. ARD Example • MOVEA.L A0,A4 • ADDA.W A3,A6 • MOVEA.W #$1234,A2

  13. Memory Addressing Modes

  14. Memory Addressing Modes • Modes to access memory locations. • 12/14: • Memory space is large area. • Many varieties of addressing modes. • Depends on desired function.

  15. ARI (Address Register Indirect) • Refers to contents ofmemory location pointed by An. • Address register enclosed in parenthesis  (An).

  16. Example: ARI • D0 = $12345678 • A1 = $007A92 • MOVE.B D0,(A1) (This command does not move the data inside D0 into A1, but moves the data inside D0 into the memory location pointed by A1).

  17. Example: ARI • MOVE.B D1,(A4) • Moves a byte from D1 into the memory location specified by A4. • ADD.W (A3),D3 • Adds the word content of memory address specified by A3 to data register D3.

  18. Example: ARI • D0 = $12345678 • A1 = $00007A92 • MOVE.L D0,(A1) Memory Contents $7A90 $7A91 $7A92 $12 $7A93 $34 D0.L = $12345678 $7A94 $56 $7A95 $78 A1 = $007A92 (A1 is still unchanged).

  19. ARI + PI (Address Register Indirect with Post-Increment) • Same as ARI, but An automatically incrementedafter execution (post-increment). • Use the ‘+’ sign after (An). • Useful in for loops.

  20. ARI + PI (Address Register Indirect with Post-Increment) • Increment value depends on data length: • If .B is used, An is incremented by 1. • If .W is used, An is incremented by 2. • If .L is used, An is incremented by 4.

  21. Example 1: ARI + PI • D0 = $12345678 • A1 = $001002 • MOVE.W D0,(A1)+ Memory Content $1001 $1002 $56 $1003 $78 D0 = $12345678 $1004 $1005 After execution, A1 is incremented by 2 since .W was used. $1006 A1 = $1002 + 2 = $001004 (new value).

  22. D0 A0 A1 5 $1000 $2000 4 $1001 $2001 3 $1002 $2002 2 $1003 $2003 1 $1004 $2004 0 $1005 $2005 Example 2: ARI + PI D0 = $00000005 *as counter A0 = $001000 A1 = $002000 LABEL1 MOVE.B (A0)+,(A1)+ SUB.B #1,D0 CMP #0,D0 BNE LABEL1

  23. ARI + PD (Address Register Indirect with Pre-Decrement) • Same as ARI, but value in address register automatically decrementedbefore execution (pre-decrement). • Use the ‘-’ before (An) sign. • Useful to push data to stack.

  24. ARI + PD (Address Register Indirect with Pre-Decrement) • The increment value depends on data length: • If .B is used, An is decremented by 1. • If .W is used, An is decremented by 2. • If .L is used, An is decremented by 4.

  25. Example: ARI + PD – Moving Data to Stack • D0 = $12345678 • A7 = $001002 • MOVE.B D0,-(A7) Memory Contents $1001 $78 A7 (SP) Before execution, A7 is decremented by 1 since .B was used. $1002 A7 = $1002 - 1 = $001001 (new value). $1003 $1004 D0 = $12345678 $1005 $1006

  26. ARI + D (Address Register Indirect with Displacement) • Adds a displacement value to ARI. • Format: d(An) • An is address register. • d is 16-bit displacement value. • -32,768 ($8000) ≤ d ≤ 32,767 ($7FFF)

  27. Example: ARI + D D3 = $12345678 A4 = $004500 • MOVE.B D3,$750(A4) Memory Contents $4C4C $4C4D $4C4E A4=$004500, Disp.=$750 Effective Address: A4 $004500 D $000750 + EA $004C50 $4C4F $4C50 $78 $4C51

  28. Example: ARI + D D3 = $00000000 A4 = $004500 • MOVE.B $FFF3(A4),D3 Memory Contents $44F1 $11 $44F2 $22 $44F3 $33 $FFF3 is negative (MSB = 1) 2’s complement = $000D $44F4 $44 $44F5 $55 Effective Address: A4 $004500 Disp. $00000D – $0044F3 $44F6 $66 D3 = $00000033

  29. Example: ARI + D D3 = $00000000 A4 = $004500 • MOVE.B -5(A4),D3 Memory Contents $44F9 $44FA $44FB $14 $44FC $44FD Effective Address: A4 $004500 Disp. $000005 – $0044FB $44FE D3 = $00000014

  30. ARI + D Example • MOVE.B D1,34(A0) • ADD.B $1254(A2),D4 • Displacement must not be more than 16-bits long.

  31. ARI + I (Address Register Indirect with Index) • Similar to ARI + D, but adds another index term. • Displacement range $80 (-128) < D < $7F (127). • Index term from Dn or An. • Used for implementing 2-D arrays. • Adds index term into bracket: • D(An,Dn.W) • D(An,An.W) • Effective address is ARI + D + Index (Dn.W or An.W).

  32. ARI + I Example • MOVE.B D1,34(A0,D3.W) • ADD.B $54(A2,A4.W),D4 • Displacement must be 8-bits long. • Index must be 16-bits long.

  33. ARI + I Example D1 = $00000012 A4 = $00001000 MOVE.B #$FF,$78(A4,D1.W) Effective Address (ARI + D + I): $1088 $1089 ARI $00001000 + D1.W $ 0012 + D $ 78 EA $0000108A $108A $FF $108B $108C $108D $108E

  34. ALA (Absolute Long Address) • Directly addresses memory locations. • Address must be 24-bits. • No sign extension performed. • Slower than ASA, requires more machine code.

  35. ALA Example • MOVE.L D0,$100100 • ADD.B $001000,D3 • MOVE.B $000100,$400400

  36. Example: ALA • MOVE.B $001000,D0 • Moves byte content of memory address $1000 to D0. • ADD.W $400400,D1 • Adds the word content of $400400 to D1. • MOVE.L D4,$003000 • Moves a long-word from D4 to address $3000. *Address length must always be 24-bits

  37. 0 0 0 0 1 2 3 4 D1 = Absolute Long Address D1 = $00000000 MOVE.W $001000,D1 Memory $1000 $12 $1001 $34 $1002 $FF $1003 $56 $1004 $AA $1005 $AC $1006 $12

  38. Absolute Short Address • Used to directly address data in two memory ranges: • $000000 to $007FFF. • $FF8000 to $FFFFFF. • Only specify 16-bit address, automatically sign-extended to 24-bits. • Requires less machine code than ALA. • Be careful with sign-extension.

  39. 0 0 4 6 0 1 0000 0000 0100 0110 0000 0001 Example: Absolute Short Address • SUB.B $4601,D4 4 6 0 1 0100 0110 0000 0001 MSB is 0 sign-extended to 24-bits E.A. is $004601 Will subtract the byte value in address $004601 from D4

  40. F F 8 4 3 2 1111 1111 1000 0100 0011 0010 Example: Absolute Short Address • MOVE.B $8432,D3 8 4 3 2 1000 0100 0011 0010 MSB is 1 sign-extended to 24-bits E.A. is $FF8432 Will move byte value from address $FF8432 to D3.

  41. ASA vs. ALA MOVE.B $8432,D3 and MOVE.B $FF8432,D3 are equal, but MOVE.B $8432,D3 executes faster & uses less memory space.

  42. PC + D (Program Counter with Displacement) • Similar to ARI + D, but An replaced with PC. • Allows flexible program placement: • Can be put anywhere in memory. • Address referred relative to PC. • Would still run even with different starting addresses.

  43. Program Counter with Displacement • Format: d(PC) • PC is program counter. • d is 16-bit displacement value. • 16 bit displacement: • -32,768 ($8000) ≤ d ≤ 32,767 ($7FFF) • Displacement must be properly calculated during program design.

  44. Why PC + D allows flexible addressing? Data #1 Data #2 Data #1 is located 3 memory locations above Instruction #1 Data #2 is located 2 memory locations above Instruction #1 Data #3 Instruction #1 Instruction #2 Instruction #3 … … Instruction #n In PC + D, the location of data is always stated as relative to instruction.

  45. Why PC + D allows flexible addressing? Data #1 Data #2 Data #3 Instruction #1 PC Instruction #2 Instruction #3 … … Instruction #n When the program is run, PC is incremented as instructions are executed.

  46. Data #1 Data #2 Data #3 Instruction #1 Instruction #2 Instruction #3 … … Instruction #n Why PC + D allows flexible addressing? Data #1 is located 3 memory locations above PC Data #2 is located 2 memory locations above PC When program running, data location referred to PC.

  47. Address Space Address Space Address Space Data #1 is located 3 memory locations above PC Data #1 is located 3 memory locations above PC Data #1 is located 3 memory locations above PC Data #1 Data #1 Data #1 Data #2 Data #2 Data #2 Data #3 Data #3 Data #3 Instruction #1 Instruction #1 Instruction #1 Instruction #2 Instruction #2 Instruction #2 Instruction #3 Instruction #3 Instruction #3 … … … … … … Instruction #n Instruction #n Instruction #n Wherever you put the program, PC-relative addressing always refers to the right location. *Assuming PC @ Instruction #1

  48. PC + D Example PC = $004000 D1 = $12345678 MOVE.B $32(PC),D1 Memory $4031 $12 $4032 $23 Effective Address: PC = $004000 D = $ 32 EA = $004032 $4033 34 $4034 $45 $4035 $56 + $4036 $67 1 2 3 4 5 6 2 3 D1 =

  49. PC + I (Program Counter with Index) • Similar to ARI + I, but An replaced with PC. • Allows similar flexibility as PC + D. • Format: • d(PC,Dn) • d(PC, An) • PC is program counter. • d is 8-bit displacement value.

  50. PC + I (Program Counter with Index) • 8-bit displacement: • -128 ($80) ≤ d ≤ 127 ($7F) • Displacement must be properly calculated during program design.

More Related