68hc11 programming model & addressing modes

32
1 68HC11 Programming 68HC11 Programming Model & Addressing Model & Addressing Modes Modes Notes: Tests will be returned in your studios. Grades will be up by tonight. Today: First Hour: HC11 Programming model Section 1.1-1.5 of Huang’s Textbook In-class Activity #1 Second Hour: Addressing Modes Section 1.6-1.7 of Huang’s Textbook In-class Activity #2

Upload: lane-mendez

Post on 30-Dec-2015

87 views

Category:

Documents


3 download

DESCRIPTION

68HC11 Programming Model & Addressing Modes. Notes: Tests will be returned in your studios. Grades will be up by tonight. Today: First Hour : HC11 Programming model Section 1.1-1.5 of Huang’s Textbook In-class Activity #1 Second Hour : Addressing Modes - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 68HC11 Programming Model & Addressing Modes

1

68HC11 Programming 68HC11 Programming Model & Addressing Model & Addressing

ModesModesNotes: Tests will be returned in your studios. Grades will be

up by tonight.

Today:• First Hour: HC11 Programming model

–Section 1.1-1.5 of Huang’s Textbook

– In-class Activity #1

• Second Hour: Addressing Modes

• Section 1.6-1.7 of Huang’s Textbook

– In-class Activity #2

Page 2: 68HC11 Programming Model & Addressing Modes

2

Hardware ModelHardware ModelArchitecture, hardware timing Architecture, hardware timing specs, electrical specs, wiring specs, electrical specs, wiring specs, power specs...specs, power specs...

Hardware ModelHardware ModelArchitecture, hardware timing Architecture, hardware timing specs, electrical specs, wiring specs, electrical specs, wiring specs, power specs...specs, power specs...

Recap: Toy CPURecap: Toy CPU

Address Bus

M A R

P C

I R

Memory Address

Bus A C

A

B

M B R

Result Bus

Memory Bus

Memory Data Bus

What does a chip designer need to know

build the computer?

What does a chip designer need to know

build the computer?

Page 3: 68HC11 Programming Model & Addressing Modes

3

ProgrammingProgramming• “Program” is the sequence of instructions which

serves as input to the control FSM of the computer.

• “Machine instruction” is a sequence of binary digits which can be executed by the processor

• “Assembly language” : assembly instructions

–An assembly instruction is a mnemonic representation of a machine instruction

–Assembly programs must be translated before it can be executed: translated by an assembler

• “High-level language”: syntax similar to English

–A translator is required to translate the program written in a high-level language to machine language: compiler

Page 4: 68HC11 Programming Model & Addressing Modes

4

Programming ModelProgramming ModelProgramming ModelProgramming Model

Toy Programmer’s ViewToy Programmer’s View

What does a programmer

need to know to program the computer?

What does a programmer

need to know to program the computer?

2. RegistersRegisters3. Instruction SetInstruction Set

1. Memory ModelMemory Model

Registers such as MAR and MBR are “invisible” to the programmer

AC (16 bits)

PC (14 bits) Memory

(16 bits wide,

14-bit address)

List of

Instructions

Page 5: 68HC11 Programming Model & Addressing Modes

5

Toy InstructionsToy Instructions

16-bit Accumulator

14-bit Program Counter

15 AC 0

13 PC 0

RegistersRegistersRegistersRegisters

What registers

do we need?

What registers

do we need?

Mnemonic Operation Op-code

LOAD mem<qhhh> -> AC 00

STORE AC -> mem<qhhh> 01

ADD AC + mem<qhhh> -> AC 10

BRN IF AC<15> =1 THEN qhhh -> PC 11

Page 6: 68HC11 Programming Model & Addressing Modes

6

Programming ModelProgramming ModelInstruction FormatInstruction FormatInstruction FormatInstruction Format

How many bits are needed for the OpCode?

22

How many bits are needed to access any memory location?

1414

16-bit Instruction16-bit Instruction

2-bit OpCode2-bit OpCode

OPOP OPERANDOPERAND

14-bit Operand14-bit Operand

Page 7: 68HC11 Programming Model & Addressing Modes

7

What bus do

we take?

What bus do

we take?

Toy Programming ModelToy Programming ModelInstruction SetInstruction SetInstruction SetInstruction Set

Address Bus

M A R

P C

I R

Memory Address

Bus

Mnemonic Operation Op-code

LOAD mem<qhhh> -> AC 00

STORE AC -> mem<qhhh> 01

ADD AC + mem<qhhh> -> AC 10

BRN IF AC<15> =1 THEN qhhh -> PC 11

Page 8: 68HC11 Programming Model & Addressing Modes

8

Introducing the M6811Introducing the M6811A “single-chip 8-bit micro-controller”– Intended to control appliances– 8-bit data bus– 16-bit address bus– Integrates many items on one chip:»Clock»CPU»RAM»ROM»Ports for External Input/Output»Several built-in Input/Output devices like

timers, serial and parallel communication

Page 9: 68HC11 Programming Model & Addressing Modes

9

ROM-8KB

RAM-256 bytes

EEPROM-512 bytes

PORTA

PULSE ACCUMULATOR

PERIODIC INTERRUPT

COP WATCHDOG

PAIOC2

OC3OC4OC5

OC1

IC1

IC2IC3

PA7

PA6PA5PA4PA3PA2PA1

PA0

PE7

PE6PE5PE4

PE3

PE2

PE1PE0

PORTE

VREFH

VREFL

A/DCONVERTER

DA

TA

DIR

EC

TIO

N

PORTD

SSSCK

MOSI

MISO

SPI

TxD

RxDSCI

PD5

PD4PD3

PD2

PD1

PD0

M68HC11 CPU

ADDRESS DATA BUS

INTERRUPTS

RESET

XIRQ

IRQ(V

PPBULK) HANDSHAKE I/O

DATA DIRECTION C

PORT CPORT B

PARALLELI/O

SINGLECHIP

PB7

PB6

PB5

PB4

PB3

PB2

PB1

PB0

PC7

PC6

PC5

PC4

PC3

PC2

PC1

PC0

STRA

STRB

A15

A14

A13

A12

A11

A10

A9

A8

AD7

AD6

AD5

AD4

AD3

AD2

AD1

AD0

R/W ASEXPAND

OSCILLATOR

XTAL

EXTAL

E

MODALIR

MODB(VSTBY )

VDD

VSS

MODESELECT

POWER

M6811 Hardware ModelM6811 Hardware Model

Page 10: 68HC11 Programming Model & Addressing Modes

10

Bus #1

M A R

Memory Address

Bus

A

B

M B R

Bus #2

Memory Data BusRegister File

(A, B, IX, IY, IR)

MUX

FLAGS

P C

M6811 ALUM6811 ALU

Page 11: 68HC11 Programming Model & Addressing Modes

11

M6811 Memory ModelM6811 Memory ModelMemory = 64K x 8

$0000

7 mem 0

$FFFF

$hhhh

16-bit Program Counter

15 PC 0

Number Notation

$ denotes hexadecimal

h = 0000 .. 1111

Number Notation

$ denotes hexadecimal

h = 0000 .. 1111

8-bit Accumulator

7 ACCx 0

Page 12: 68HC11 Programming Model & Addressing Modes

12

M6811 RegistersM6811 Registers

8-bit Accumulators AA & BB7 A 0 7 B 0

15 D 0 16-bit Accumulator D

- - HH - NN ZZ VV CC CCondition CCode RRegister

CCarry/borrow (MSB)

oVVerflow (2s C)

ZZero

NNegativeHHalf carry (bit 34),(BCD)

15 PC 0 Program CounterProgram Counter

15 IX 0 16-bit Index Register IX

15 IY 0 16-bit Index Register IY

Page 13: 68HC11 Programming Model & Addressing Modes

13

M6811 Instruction NotationM6811 Instruction Notation

LDAA (opr) : opr = data in memory

The Load Accumulator A instruction copies the contents of the addressed memory register into the accumulator

This means the contents of memory (M) replaces the contents of accumulator A (A)

denoted by (M) denoted by (M) (A) (A)

Motorola short-hand notation: M M A A

See PRG entry for “LDAA”

Page 14: 68HC11 Programming Model & Addressing Modes

14

Sample InstructionSample Instruction

$C120 B6

$C121 C2

$C122 10

$C123 ..

$C210 12

LDAA Transfer content of M($C210) toAccumulator A

Instruction Format

OPCODEOPCODE

Address-High ByteAddress-High Byte

Address-Low ByteAddress-Low Byte

The instruction directly specifies the address

The instruction directly specifies the address

LDAALDAA

Page 15: 68HC11 Programming Model & Addressing Modes

15

$C120 B6

$C121 C2

$C122 10

$C123 ..

$C210 12

Memory Segment

LDAA

M6811 Registers

PC

IR

A

B

C1 20

23

45

A & B contain

values from previous

write operations

A & B contain

values from previous

write operations

PC holds address of next instructionPC holds address of next instruction

Example: LDAAExample: LDAA

Page 16: 68HC11 Programming Model & Addressing Modes

16

1. Fetch Opcode1. Fetch Opcode

$C120 B6

$C121 C2

$C122 10

$C123 ..

$C210 12

Memory Segment

LDAA

LDAA ExampleM6811 Registers

PC

IR

A

B

C1 20

23

45

21Increment

PC

Increment

PC

B6

Page 17: 68HC11 Programming Model & Addressing Modes

17

2. Decode Opcode2. Decode Opcode

$C120 B6

$C121 C2

$C122 10

$C123 ..

$C210 12

Memory Segment

LDAA

M6811 Registers

PC

IR

A

B

C1 21

23

45

B6

LDAA Example

Decode opcode

How many operand bytes?

(Use PRG)

22

Decode opcode

How many operand bytes?

(Use PRG)

22

Page 18: 68HC11 Programming Model & Addressing Modes

18

M6811 Registers

PC

IR

A

B

C1

23

45

B6

21

3. Operand Fetch3. Operand Fetch

$C120 B6

$C121 C2

$C122 10

$C123 ..

$C210 12

Memory Segment

LDAA

LDAA Example

Fetch two operand bytes

C2

22Increment

PC

Increment

PC

10

23

Increment

PC

Increment

PC

Page 19: 68HC11 Programming Model & Addressing Modes

19

4. Instruction Execution4. Instruction Execution

$C120 B6

$C121 C2

$C122 10

$C123 ..

$C210 12

Memory Segment

LDAA

M6811 Registers

PC

IR

A

B

C1 23

23

45

B6 C2 10

LDAA Example

Get data from memory

Get data from memory

12

Page 20: 68HC11 Programming Model & Addressing Modes

20

Do Activity #1 NowDo Activity #1 Now

It is really, really important to bring

the Huang textbook, and

the 6811 manual

To each and every class

Page 21: 68HC11 Programming Model & Addressing Modes

21

The LOAD instructions

A group of instructions that place a value or copy the contents of a memorylocation (or locations) into a register

LDAA <opr>LDAB <opr>LDD <opr>LDX <opr>LDY <opr>LDS <opr>

<opr> can be immediate, direct, extended, or index modeExamples

LDAA $10LDX #$1000

HC11 Sample InstructionsHC11 Sample Instructions

Page 22: 68HC11 Programming Model & Addressing Modes

22

The ADD instructionA group of instructions perform addition operation

ABAABXABYADDA <opr>ADDB <opr>ADDD <opr>ADCA <opr>ADCB <opr><opr> is specified using an addressing mode

Examples.ADDA #10ADDA $20ADDD $30

Page 23: 68HC11 Programming Model & Addressing Modes

23

The SUB instruction

A group of instructions that perform the subtract operation

SBASUBA <opr>SUBB <opr>SUBD <opr>SBCA <opr> ; A [A] - <opr> - C flagSBCB <opr> ; A [B] - <opr> - C flag

<opr> can be one of selected addressing modesExamples

SUBA #10SUBA $10SUBA 0,XSUBD 10,X

Page 24: 68HC11 Programming Model & Addressing Modes

24

The STORE instructionA group of instructions that store the contents of a register into a memory location or memory locations

STAA <addr>STAB <addr>STD <addr>STX <addr>STY <addr>STS <addr>

<addr> can be one of selected modeExamples:

STAA $20STAA 10,XSTD $10STD $1000STD 0,X

Page 25: 68HC11 Programming Model & Addressing Modes

25

Sample InstructionSample Instruction

$C120 B6

$C121 C2

$C122 10

$C123 ..

$C210 12

LDAA Transfer content of M($C210) toAccumulator A

Instruction Format

OPCODEOPCODE

Address-High ByteAddress-High Byte

Address-Low ByteAddress-Low Byte

The instruction directly specifies the address

The instruction directly specifies the address

This is not the only way to the jobThis is not the only way to the job

How did we specify the operand?How did we specify the operand?

Page 26: 68HC11 Programming Model & Addressing Modes

26

Addressing ModesAddressing Modes

SourceForm Operation Boolean

Expression Opcode Operand BytesMachine Code

LDAA Load Accumulator A M A IMMIMM 86 ii 2

DIRDIR 96 dd 2

EXTEXT B6 hh ll 3

IND,XIND,X A6 ff 2

IND,YIND,Y 18 A6 ff 3

AddressingAddressingMode forMode forOperandOperand

5 different ways to specify the operand!5 different ways to specify the operand!

Each way is called an Addressing ModeAddressing Mode

They have differentdifferent OpCodes

They have differentdifferent OpCodes

How do we tell these addressing modes apart?How do we tell these addressing modes apart?

Page 27: 68HC11 Programming Model & Addressing Modes

27

Address Mode ExamplesAddress Mode Examples

SourceForm Operation Boolean

Expression Opcode Operand BytesMachine Code

LDAA Load Accumulator A M A IMMIMM 86 ii 2

DIRDIR 96 dd 2

EXTEXT B6 hh ll 3

IND,XIND,X A6 ff 2

IND,YIND,Y 18 A6 ff 3

AddressingAddressingMode forMode forOperandOperand

IMM (immediate)86 28 : LDAA #$28

Load ACCA with the "immediate"constant $28

IMM (immediate)86 28 : LDAA #$28

Load ACCA with the "immediate"constant $28

DIR (direct)96 28 : LDAA $28

Load ACCA with the content of memoryaddress $000028

DIR (direct)96 28 : LDAA $28

Load ACCA with the content of memoryaddress $000028

How much of the address space can we "reach" with DIR?

256 BytesWhat is this mode good for?

Saves Bytes & Fetches

How much of the address space can we "reach" with DIR?

256 BytesWhat is this mode good for?

Saves Bytes & Fetches

Page 28: 68HC11 Programming Model & Addressing Modes

28

Address Mode Examples-2Address Mode Examples-2

SourceForm Operation Boolean

Expression Opcode Operand BytesMachine Code

LDAA Load Accumulator A M A IMMIMM 86 ii 2

DIRDIR 96 dd 2

EXTEXT B6 hh ll 3

IND,XIND,X A6 ff 2

IND,YIND,Y 18 A6 ff 3

AddressingAddressingMode forMode forOperandOperand

EXT (extended)B6 C128 : LDAA $C128

Load ACCA with the content of memoryaddress $C128

EXT (extended)B6 C128 : LDAA $C128

Load ACCA with the content of memoryaddress $C128

How much of the address space can we "reach" with EXT?

65536 BytesWhat is this mode good for?

Reaches all memory

How much of the address space can we "reach" with EXT?

65536 BytesWhat is this mode good for?

Reaches all memory

Page 29: 68HC11 Programming Model & Addressing Modes

29

Address Mode Examples-3Address Mode Examples-3

SourceForm Operation Boolean

Expression Opcode Operand BytesMachine Code

LDAA Load Accumulator A M A IMMIMM 86 ii 2

DIRDIR 96 dd 2

EXTEXT B6 hh ll 3

IND,XIND,X A6 ff 2

IND,YIND,Y 18 A6 ff 3

AddressingAddressingMode forMode forOperandOperand

IND,X (indexed,X)A6 28: LDAA $28,X

Load ACCA with the content of memory address (EA), where

EA = IX + $28IX is called an Index Register It holds a 16-bit base address

The operand is an unsignedunsigned offset byteEA = Base + Offset

There’s another index register, IY

IND,X (indexed,X)A6 28: LDAA $28,X

Load ACCA with the content of memory address (EA), where

EA = IX + $28IX is called an Index Register It holds a 16-bit base address

The operand is an unsignedunsigned offset byteEA = Base + Offset

There’s another index register, IY

How much of the address space can we "reach" with IND,X?

256 BytesWhat is this mode good for?Addressing elements in an array

How much of the address space can we "reach" with IND,X?

256 BytesWhat is this mode good for?Addressing elements in an array

Page 30: 68HC11 Programming Model & Addressing Modes

30

NeedNeed Addressing ModeAddressing Mode

Reach the first 256 RAM Directlocations quickly

Load a constant without having Immediateto first put it in memory

Access arrays of numbers Indexedefficiently, implement pointers

We’ll do array and pointer examples later...We’ll do array and pointer examples later...

What’s the big idea?What’s the big idea?All of the addressing modes were developed in response to specific needsAll of the addressing modes were developed in response to specific needs

Page 31: 68HC11 Programming Model & Addressing Modes

31

Immediate OP CODE

DATA

Direct OP CODE

Address-Low00 Address-Low

Extended OP CODE

Address-High

Address-Low

Address-High Address-Low

Indexed OP CODE

Offset

Index Register

Address-High Address-Low

Effective Address

Address Mode SummaryAddress Mode SummaryOP CODE

DATA-High

DATA-Low

16-bit data

Page 32: 68HC11 Programming Model & Addressing Modes

32

Do Activity #2 NowDo Activity #2 NowDue: End of Class Today.

RETAIN THE LAST PAGE(S) (#3 onwards)!!

For Next Class:• Bring Huang Textbook, & HC11 PRG

• Required Reading:– Sec 2.1-2.4, 2.8 of Huang

• This reading is necessary for getting points in the Studio Activity!