Actualizado el 21 de Marzo del 2018 (Publicado el 9 de Noviembre del 2017)
1.007 visualizaciones desde el 9 de Noviembre del 2017
245,1 KB
32 paginas
Creado hace 15a (15/07/2009)
SET de
Instrucciones
CPU08
Curso de Microcontroladores
Familia HC908 Flash de Freescale
Parte II
ING. DANIEL DI LELLA
SET DE
INSTRUCCIONES
• Movimiento de Datos
• Aritméticas
• Lógicas
• Manipulación de Datos
• Manipulación de Bits
• Control del Programa
• Operaciones BCD
• Especiales
Compatibilidad de Código entre
familias HC705 / HC908 / HC9S08 !!
Facilita la migración de
aplicaciones a familias de MCUs
más modernas sin perder horas de
ingeniería en re - escritura de
programas.
El set de instrucciones de la familia HC908, es una versión muy mejorada y ampliada del set
de instrucciones de la flia. HC705. Esta característica hace que los usuarios de HC705 puedan
migrar rapidamente a HC908, sin grandes cambios en sus rutinas y luego mejorar las
aplicaciones existentes con el uso de las nuevas instrucciones.
Curso de Microcontroladores
Familia HC908 Flash de Freescale
Parte II
ING. DANIEL DI LELLA
Movimiento de Datos
- Carga registros de CPU -
Description
Operation
Effect on CCR
V H I N Z C
Load
Accumulator
from Memory
Load Index
Register X
from Memory
Load Index
Register H:X
from Memory
A <— (M)
0 – – ³
³
–
X <— (M)
0 – – ³
³
–
H:X <— (M:M + 1)
0 – – ³
³
–
Address
Modes
IMM
DIR
EXT
IX2
IX1
IX
SP1
SP2
IMM
DIR
EXT
IX2
IX1
IX
SP1
SP2
IMM
DIR
Bus
Cycles
2
3
4
4
3
2
4
5
2
3
4
4
3
2
4
5
3
4
Source
Forms
LDA #opr
LDA opr
LDA opr
LDA opr,X
LDA opr,X
LDA ,X
LDA opr,SP
LDA opr,SP
LDX #opr
LDX opr
LDX opr
LDX opr,X
LDX opr,X
LDX ,X
LDX opr,SP
LDX opr,SP
LDHX
LDHX
#opr
opr
Curso de Microcontroladores
Familia HC908 Flash de Freescale
Parte II
ING. DANIEL DI LELLA
Movimiento de Datos
- Almacenamiento de registos
del CPU -
Source
Forms
opr
opr
opr,X
opr,X
,X
opr,SP
opr,SP
STA
STA
STA
STA
STA
STA
STA
STX
STX
STX
STX
STX
STX
STX
opr
opr
opr,X
opr,X
,X
opr,SP
opr,SP
STHX
opr
Description
Store
Accumulator in
Memory
Store Index
Register X in
Memory
Store Index
Register H:X in
Memory
Operation
Address
Effect on CCR
V H I N Z C Modes
M
<—
(A)
0 – –
³
³
–
M
<—
(X)
0 – –
³
³
–
DIR
EXT
IX2
IX1
IX
SP1
SP2
DIR
EXT
IX2
IX1
IX
SP1
SP2
M:M+1
<—
(H:X)
0 – –
³
³
– DIR
Bus
Cycles
3
4
4
3
2
4
5
3
4
4
3
2
4
5
4
Curso de Microcontroladores
Familia HC908 Flash de Freescale
Parte II
ING. DANIEL DI LELLA
Movimiento de Datos
- Operaciones con el Stack -
Source
Forms
PSHA
PSHH
PSHX
PULA
PULH
PULX
Description
Push Accumulator
onto Stack
Push Index Register
H onto Stack
Push Index Register
X onto Stack
Pull Accumulator
from Stack
Pull Index Register
H from Stack
Pull Index Register
X from Stack
Operation
Address
Effect on CCR
V H I N Z C Modes
Bus
Cycles
Push (A); SP <— (SP – $01)
– – – – – –
INH
Push (H); SP <— (SP – $01)
– – – – – –
INH
Push (X); SP <— (SP – $01)
– – – – – –
INH
SP <— (SP + $01); Pull (A)
– – – – – –
INH
SP <— (SP + $01); Pull (H)
– – – – – –
INH
SP <— (SP + $01); Pull (X)
– – – – – –
INH
2
2
2
2
2
2
Curso de Microcontroladores
Familia HC908 Flash de Freescale
Parte II
ING. DANIEL DI LELLA
Movimiento de Datos
- Registro a Registro -
Source
Forms
Description
Operation
Bus
Effect on CCR Address
V H I N Z C Modes Cycles
TAP
TPA
TAX
TXA
TXS
TSX
Transfer Accumulator
to CCR
Transfer CCR to
Accumulator
Transfer Accumulator
to Index Register X
Transfer Index Register
X to Accumulator
Transfer Index
Register to SP
Transfer SP to
Index Register
CCR <— (A)
³
³
³
³
³
³
INH
A <— (CCR)
– – – – – –
INH
X <— (A)
A <— (X)
– – – – – –
INH
– – – – – –
INH
SPH:SP <— (H:X) – $0001
– – – – – –
INH
H:X <— (SPH:SP) + $0001
– – – – – –
INH
2
1
1
1
2
2
Curso de Microcontroladores
Familia HC908 Flash de Freescale
Parte II
ING. DANIEL DI LELLA
Movimiento
- Memoria a Memoria -
Source
Forms
Description
Operation
Effect on CCR
Address
V H I N Z C Modes
MOV opr,opr
MOV opr,X+
MOV #opr,opr
MOV X+,opr
Move
(M)Destination <— (M) Source
H:X <— (H:X) + 1 in X+ modes
0 – –
³
³
–
DD
DIX+
IMD
IX+D
Bus
Cycles
5
4
4
4
Curso de Microcontroladores
Familia HC908 Flash de Freescale
Parte II
ING. DANIEL DI LELLA
Movimientos de Datos:
Las instrucciones de movimientos de datos, han sido ampliadas notoriamente en la familia
HC908 en comparación con la HC705.
El agregado de instrucciones que involucran al nuevo registro concatenado H:X de 16 bits
como ser LDHX, STHX, otorgan gran flexibilidad en el manejo de tablas y rutinas de acceso
indexado, ahorrando código y aumentando la velocidad de ejecución de las mismas.
Además se puede apreciar que por cada tipo de instrucción, se agrega un nuevo modo de
direccionamiento, basado en el uso del Stack Pointer “SP” (puntero de pila) como “segundo
registro índice”, lo que facilita el uso de lenguajes de alto nivel como el “C” y otros.
Las instrucciones PUSH y PULL permiten resguardar y rescatar el contenido del Acumulador
(ACC) y del puntero indice H:X en espacio de RAM, ante sub-rutinas e interrupciones al
programa (externas / internas), en forma más rápida y transparente.
Las instrucciones “MOV” en sus diferentes versiones, facilitan el movimiento de datos SIN
AFECTAR LOS REGISTROS del CPU, de esta forma se consiguen operaciones más rápidas y
algoritmos más sencillos. Estas instrucciones son útiles en rutinas de RX / TX en la SCI
(UART) de los distintos MCUs de la flia. , o bién en movimientos de datos de una tabla a otra.
Curso de Microcontroladores
Familia HC908 Flash de Freescale
Parte II
ING. DANIEL DI LELLA
Aritméticas
- Adición -
Source
Forms
Description
Operation
Add Memory to
Accumulator
without Carry
A <— (A) + (M)
ADD #opr
ADD opr
ADD opr
ADD opr,X
ADD opr,X
ADD
ADD opr,SP
ADD opr,SP
,X
ADC #opr
ADC opr
ADC opr
ADC opr,X
ADC opr,X
ADC
ADC opr,SP
ADC opr,SP
,X
Effect on CCR
Address
V H I N Z C Modes
IMM
DIR
EXT
IX2
IX1
IX
SP1
SP2
–
³
³
³
³
³
Bus
Cycles
2
3
4
4
3
2
4
5
2
3
4
4
3
2
4
5
Add Memory to
Accumulator
with Carry
A <— (A) + (M) + (C)
³
³
–
³
³
³
IMM
DIR
EXT
IX2
IX1
IX
SP1
SP2
Curso de Microcontroladores
Familia HC908 Flash de Freescale
Parte II
ING. DANIEL DI LELLA
Aritméticas
- Sustracción -
Source
Forms
Description
Operation
Effect on CCR
Address
V H I N Z C Modes
IMM
DIR
EXT
IX2
IX1
IX
SP1
SP2
³ – –
³
³
³
Bus
Cycles
2
3
4
4
3
2
4
5
2
3
4
4
3
2
4
5
SUB
SUB
SUB
SUB
SUB
SUB
SUB
SUB
SBC
SBC
SBC
SBC
SBC
SBC
SBC
SBC
#opr
opr
opr
opr,X
opr,X
,X
opr,SP
opr,SP
#opr
opr
opr
opr,X
opr,X
,X
opr,SP
opr,SP
Subtract
Memory from
Accumulator
without Carry
Subtract
Memory from
Accumulator
with Carry
A <— (A) – (M)
A <— (A) – (M) – (C)
³ – –
³
³
³
IMM
DIR
EXT
IX2
IX1
IX
SP1
SP2
Curso de Microcontroladores
Familia HC908 Flash de Freescale
Parte II
ING. DANIEL DI LELLA
Aritméticas
- Multiplicación & División -
Operation
Effect on CCR
V H I N Z C
Address
Modes
Bus
Cycles
X:A <— (X) x (A)
– 0 – – – 0
INH
A <— (H:A) ÷ (X)
H <— Remainder
– – – –
³
³
INH
5
7
Source
Forms
MUL
DIV
Description
Unsigned
8-bit x 8-bit
Multiply
Unsigned
16-bit x 8-bit
Divide
MUL
DIV
• X contendrá el MSB del producto
• A contendrá el LSB del producto
• H es el MSB del dividendo
• A es LSB del dividendo
• X no es afectado
Curso de Microcontroladores
Familia HC908 Flash de Freescale
Parte II
ING. DANIEL DI LELLA
MULTIPLICACION Y DIVISION:
La familia HC908 contiene instrucciones de Multiplicación y de División, a
diferencia de la familia HC705 que solo contenia la Multiplicación.
La instrucción de multiplicación en el CPU08, es del tipo No signado (sin signo) de
8 x 8 bits. Se ejecuta en 5 ciclos de Clock versus los 11 ciclos necesarios en
HC705. En los registros “A” y “X” se cargan los valores a multiplicar, el resultado
de la operación, se obtiene en los mismos registros “A” y “X” , en “A” se
encontrará la parte menos “pesada” del resultado , mientras que en “X” se
encontrará la parte más pesada del resultado.
La instrucción División es nueva para aquellos usuarios de HC705, en el CPU08 es
del tipo No signado (sin signo) de 16 / 8 bits. En el registro “H” se carga la parte
más pesada del valor a dividir, en el registro “A” se carga la parte menos pesada
de dicho valor, mientras el divisor se carga en el registro “X”.
El resultado de la operación, se carga en el registro “A” , mientras que el resto o
remanente se carga en el “H”. Si el resultado de la operación es mayor que “$ FF” ,
entonces se activará el flag de “CARRY” (C) en el CCR y el valor en el registro “H”
será indeterminado.
Curso de Microcontroladores
Familia HC908 Flash de Freescale
Parte II
ING. DANIEL DI LELLA
Aritméticas
- Incremento & Decremento -
Source
Forms
Description
INC
INCA
INCX
INC
INC
INC
opr
opr,X
,X
opr,SP
DEC opr
DECA
DECX
DEC opr,X
DEC
DEC opr,SP
,X
Increment
Decrement
Operation
M <— (M) + 1
A <— (A) + 1
X <— (X) + 1
M <— (M) + 1
M <— (M) + 1
M <— (M) + 1
M <— (M) – 1
A <— (A) – 1
X <— (X) – 1
M <— (M) – 1
M <— (M) – 1
M <— (M) – 1
Address
Effect on CCR
V H I N Z C Modes
Bus
Cycles
³ – –
³
³
–
³ – –
³
³
–
DIR
INH
INH
IX1
IX
SP1
DIR
INH
INH
IX1
IX
SP1
Comentarios de: HC908 FLASH, CPU08 SET DE INSTRUCCIONES (0)
No hay comentarios