68HC11 Programming Model & Addressing Modes
-
Upload
lane-mendez -
Category
Documents
-
view
82 -
download
3
description
Transcript of 68HC11 Programming Model & Addressing Modes
![Page 1: 68HC11 Programming Model & Addressing Modes](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/1.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/2.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/3.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/4.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/5.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/6.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/7.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/8.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/9.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/10.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/11.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/12.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/13.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/14.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/15.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/16.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/17.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/18.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/19.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/20.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/21.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/22.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/23.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/24.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/25.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/26.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/27.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/28.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/29.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/30.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/31.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022061418/56812bb7550346895d8ffa0c/html5/thumbnails/32.jpg)
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!