PDF de programación - HC08 FLASH, MODOS DE DIRECCIONAMIENTO CPU08

Imágen de pdf HC08 FLASH, MODOS DE DIRECCIONAMIENTO CPU08

HC08 FLASH, MODOS DE DIRECCIONAMIENTO CPU08gráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 9 de Noviembre del 2017)
825 visualizaciones desde el 9 de Noviembre del 2017
2,1 MB
24 paginas
Creado hace 14a (15/07/2009)
MODOS

DE

DIRECCIONAMIENTO

CPU08

Curso de Microcontroladores
Familia HC908 Flash de Freescale

Parte II

ING. DANIEL DI LELLA

MODOS DE

DIRECCIONAMIENTO

• Inherente
• Inmediato
• Directo
• Extendido
• Indexado
• Relativo
• Memoria a Memoria

A continuación veremos cada uno de estos modos de direccionamiento en la familia HC908,
detalles de funcionamiento y uso más frecuente de los mismos. El direccionamiento “memoria
a memoria” es una novedad para aquellos usuarios de la familia HC705 y veremos en detalle las
ventajas que ello implica.

Curso de Microcontroladores
Familia HC908 Flash de Freescale

Parte II

ING. DANIEL DI LELLA

Direccionamiento Inherente

No tiene operando
Mayormente, son operaciones sobre los registros del CPU o bits.
No se necesitan datos adicionales.
Ejemplo:

CLRA

Memoria

Espacio de Programa

4 F
X X

ocl*
ocl + 1

Espacio de Datos

X X
X X

CPU

A
X X

0 0

* localización del opcode

Contenido del registro

Curso de Microcontroladores
Familia HC908 Flash de Freescale

Parte II

ING. DANIEL DI LELLA

Direccionamiento Inmediato

Especifica el valor directamente, no la dirección del valor



Indicado por el símbolo #

Tiene un solo operando

• Contenido en el byte o los bytes seguidos inmediatamente al opcode

Ejemplo:

Memoria

LDA

#$FF

Espacio de Programa

A 6
F F

ocl
ocl + 1

Espacio de Datos

X X
X X

Curso de Microcontroladores
Familia HC908 Flash de Freescale

Parte II

CPU

A
X X

F F

Contenido del registro

ING. DANIEL DI LELLA

Direccionamiento Directo

Se especifican 8 bit de dirección del operando

• Byte superior de los 16 bits de dirección se asume que sea $00
• Usado para acceder a los primeros 256 bytes de memoria (por lo

general este espacio es en RAM).

Dirección contenida en el byte inmediatamente seguido al opcode
Ejemplo:

LDA $50

Memoria

Espacio de programa

B 6
5 0

ocl
ocl + 1

Espacio de Datos

A A
X X

0050
0051
Curso de Microcontroladores
Familia HC908 Flash de Freescale

Parte II

CPU

A
X X

A A

Contenido del registro

ING. DANIEL DI LELLA

Direccionamiento Extendido

Se especifican los 16 bits de dirección del operando

• Usado para acceder a direcciones mayores a $00FF en memoria (puede ser espacio

de RAM (mayor a $00FF) o espacio de Flash o ROM, hasta 64Kb).

Dirección contenida en los 2 bytes inmediatamente seguidos al opcode

Ejemplo:

Memoria

LDA $0400

Espacio de Programa

C 6
0 4
0 0

ocl
ocl + 1
ocl + 2

Espacio de Datos

A A
X X

0400
0401

Curso de Microcontroladores
Familia HC908 Flash de Freescale

Parte II

CPU

A
X X

A A

Contenido del registro

ING. DANIEL DI LELLA

Direccionamiento Indexado

- Sin Offset -

Se especifica el contenido del Index Register H:X como dirección del operando. A diferencia del

HC705, en el HC908 el registro indice es de 16 Bits, por lo que el compilador assembler
interpretará “H:X” cuando solo vea “X” en la instrucción con direccionamiento indexado.

CLR ,X

Ejemplo:

Memoria

Espacio de Programa

7 F
X X
X X

ocl
ocl + 1
ocl + 2

Espacio de Datos

X X

0 0

0400

0400

Curso de Microcontroladores
Familia HC908 Flash de Freescale

Parte II

CPU

H:X

04

00

Contenido del registro

ING. DANIEL DI LELLA

Direccionamiento Indexado

- 8 Bit Offset-

8 bit offset no signado + registro H:X no signado = localización de memoria

• Registro H:X no es afectado
• 8 bit offset es el byte inmediatamente seguido al opcode

CLR 10,X

Ejemplo:

Memoria

Espacio de Programa

6 F
0 A
X X

ocl
ocl + 1
ocl + 2

Espacio de Datos

X X

0 0

040A

040A

CPU

H:X

04

00

Contenido del registro

Curso de Microcontroladores
Familia HC908 Flash de Freescale

Parte II

ING. DANIEL DI LELLA

Direccionamiento Indexado

- 16 Bit Offset -

16 bit offset no signado + Registro H:X no signado = localización de memoria

• Registro H:X no es afectado
• 16 bit offset son los dos bytes inmediatamente seguidos al opcode

Ejemplo:

Memoria

Espacio de programa

STA $0100,X

D 7
0 1
0 0

ocl
ocl + 1
ocl + 2

Espacio de Datos

X X

0150

5 5

0150

Curso de Microcontroladores
Familia HC908 Flash de Freescale

Parte II

CPU

A
55

H:X

00

50

Contenido del registro

ING. DANIEL DI LELLA

Direccionamiento Indexado-

8 & 16 Bit Offsets -

Comunmente usado para acceder a elementos de estructura de datos

• El Offset sería la dirección base de la estructura
• El registro indice contendría el desplazamiento del “N”...avo elemento


Table

ORG
FCB

$100
$10, $20, $30, $40 .......






* Calcula desplazamiento para elemento N en A






CLRH
TAX
LDA

Table,X

NOTA: Si Table estuviera en los primeros 256 bytes de

memoria, la mayoría de de los ensambladores usarían
instrucciones de 8-bit de offset

Curso de Microcontroladores
Familia HC908 Flash de Freescale

Parte II

Table

H:X=N

0100

element 0
element 1
element 2






element n
element n+1
element n+2
element n+3

ING. DANIEL DI LELLA

Direccionamiento Indexado

- Usando el Stack pointer y 8-Bit Offset -

8 bit offset no signado + Registro SP no signado = localización memoria

• Registro SP no es afectado
• 8 bit offset es el byte inmediatamente seguido al byte del opcode

STA 5,SP

Ejemplo:

Memoria

Espacio de programa

9 E
E 7
0 5

Espacio del Stack

X X



F F

ocl
ocl + 1
ocl + 2

00D0

00D5

CPU

A
FF

SP

00

D0

Contenido del registro

Curso de Microcontroladores
Familia HC908 Flash de Freescale

Parte II

ING. DANIEL DI LELLA

Direccionamiento Indexado

- Usando Stack pointer y 16-Bit Offset -

16 bit offset no signado + registro SP no signado = localización memoria

• Registro SP no es afectado
• 16 bit offset son los dos bytes inmediatamente seguidos al opcode

Ejemplo:

Memoria

Espacio de programa

STA $100,SP

9 E
D 7
0 1
0 0

ocl
ocl + 1
ocl + 2
ocl + 3

Espacio de datos

X X



F F

00D0

01D0

Curso de Microcontroladores
Familia HC908 Flash de Freescale

Parte II

CPU

A
FF

SP

00

D0
Contenido del registro

NOTA: Si las interrupciones están deshabilitadas, el SP
puede ser usado como un registro indice adicional

• Menos eficiente por el uso del Pre Byte !!!

ING. DANIEL DI LELLA

Stack Pointer
- 8 Bit Offsets -

Soporta lenguajes de alto nivel

• Los Compiladores a menudo colocan parametros para procedimientos y almacenaje temporal en el stack

Direccionando el Stack Pointer es una manera eficiente para acceder a esa información

00C0

X X

temp 1

temp 2 msb

temp 2 lsb

param 3

param 2

param 1

SP

temp 1 = 1,SP
temp 2 = 2,SP and 3,SP
param 3 = 4,SP
param 2 = 5,SP
param 1 = 6,SP

Curso de Microcontroladores
Familia HC908 Flash de Freescale

Parte II

ING. DANIEL DI LELLA

Direccionamiento Relativo

• Only for branch instructions.

BGT SERVICE

OCL

PC

OP CODE
OFFSET

+2

OFFSET

SERVICE

BEQ LOOP

LOOP

OFFSET

OCL

PC

+2

OP CODE

OFFSET

• PC is + 2 from OCL (due to prefetching)
• 8 bit offset. Range is -128 +126
• Effective Address (EA) = PC + displacement(8-bit Offset)
• Assembler calculates displacement: disp. = EA - PC

from PC

Curso de Microcontroladores
Familia HC908 Flash de Freescale

Parte II

ING. DANIEL DI LELLA

Direccionamiento Relativo, Continuación...

Usado en todas las instrucciones branch (salto) condicionales
Si la condición es VERDADERA:

Program Counter = Program Counter + 8 bit offset signado

SINO:

Program Counter no es afectado

BEQ $8100

Ejemplo:

Memoria

Espacio de programa

2 7
A E
X X

$8150
$8151
$8152

Curso de Microcontroladores
Familia HC908 Flash de Freescale

Parte II

CPU
PC

81

52

Si la condición es verdadera

81

00
Contenido del registro

ING. DANIEL DI LELLA

Direccionamiento Indexado

- No Offset con Post Incremento -

El Registro indice H:X contiene la dirección del operando

• Despues que la dirección del operando es calculada, H:X es incrementado en 1 (siempre)

Loop

Out

CBEQ X+,Out
BRA
. . . .

Loop

Ejemplo:

Memoria

Espacio de Programa

7 1
0 2
X X

ocl
ocl + 1
ocl + 2

Espacio de Datos

X X



5 5

0400

0410

Curso de Microcontroladores
Familia HC908 Flash de Freescale

Parte II

A
55

Contenido del registro

CPU
H:X

04

04

04

04

00

01

02

11

ING. DANIEL DI LELLA

Direccionamiento Indexado

- 8 bit Offset con Post Incremento -

Igual al direccionamiento indexado con 8 bit offset, plus post incremento

• Después que la dirección del operando es calculada, H:X es incrementado en 1 (siempre)

Loop

Out

CBEQ $50,X+,Out
BRA
. . . .

Loop

Ejemplo:

Memoria

Espacio de programa

7 1
5 0
0 2

ocl
ocl + 1
ocl + 2

Espacio de Datos

X X



5 5

0450

0460

Curso de Microcontroladores
Familia HC908 Flash de Freescale

Parte II

A
55

Contenido del registro

CPU
H:X

04

04

04

04

00

01

02

11

ING. DANIEL DI LELLA

Direccionamiento “Memoria a Memoria”

Usado para mover información desde una locación a otra

• No usa / afecta registros del CPU

– Excepto cuando se usa direccionamiento indexado con post

incremento

• Mas eficiente que la combinación Load/Store

Pueden utilizarse con intrucciones MOV solamente
• MOV Dirección Fuente, Dirección Destino

Cuatro variantes:

Inmediato a Directo


• Directo a Directo
Indexado a Directo con Post Incremento

• Directo a Indexado con Post Incremento

Curso de Microcontroladores
Familia HC908 Flash de Freescale

Parte II

ING. DANIEL DI LELLA

Direccionamiento Memoria a Memoria

- Immediato a Directo -

La Fuente es un byte valor inmediato

El Destino debe estar en los primeros 256 bytes de memoria

Ejemplo de uso:



Inicialización de variables o registros en RAM.

MOV #$AA,$F0

Espacio de programa

Espacio de Datos

Memoria

6 E
A A
F 0

ocl
ocl + 1
ocl + 2

X X

A A

00F0

00F0

Curso de Microcontroladores
Familia HC908 Flash de Freescale

Parte II

ING. DANIEL DI LELLA

Direccionamiento Memoria a Memoria

- Directo a Directo -
La Fuente debe estar en los primeros 256 bytes de memoria

El Destino debe estar en los primeros 256 bytes de memoria

Ejemplo de uso:

• Movimiento de datos desde una página cero a otro lugar dentro de la

misma página (mover datos dentro de la misma
  • Links de descarga
http://lwp-l.com/pdf7440

Comentarios de: HC08 FLASH, MODOS DE DIRECCIONAMIENTO CPU08 (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad