Académique Documents
Professionnel Documents
Culture Documents
El procesador HCS08
M.C. Jorge Eduardo Ibarra Esquer
Semestre 2011-1
Compatibilidad de
cdigo con la familia
M68HC05
Instrucciones para
operaciones BCD
Operacin de
multiplicacin de 8x8
bits y divisin de 16/8
Modelo de programacin
El acumulador A
Registro de propsito general de 8 bits
El CPU lo usa para colocar operandos y
resultados de operaciones
Apuntador de la pila
Contiene la direccin de la siguiente
posicin en la pila
La direccin se decrementa con las
operaciones push y se incrementa con las
operaciones pull
Contador de programa
Contiene la direccin de la siguiente
instruccin u operando que se leer
Mapa de memoria
Mapa de memoria
Programacin del
microcontrolador
Sintaxis de ensamblador
Un programa fuente en ensamblador
consiste en una secuencia de sentencias.
Cada sentencia se codifica en una lnea de
texto y puede ser:
Un comentario
Una lnea de cdigo
Comentarios
Un comentario puede ocupar una lnea
completa con el propsito de explicar el
funcionamiento de un bloque de cdigo
Un comentario se indica con un punto y
coma, despus del cual sigue el texto del
comentario
; Esta lnea es un comentario
Cdigo
Cada lnea de cdigo incluye uno o ms de
los siguientes campos:
Una etiqueta
Un campo de operacin
Uno o ms operandos
Un comentario
Etiquetas
La etiqueta es el primer campo en una lnea de
cdigo. Una etiqueta es un smbolo seguido por
dos puntos :. Las etiquetas estn formadas por:
Letras
Nmeros
Puntos
Guin de subrayado
Etiquetas
Por lo general, el ensamblador considera
que cualquier identificador que inicie a
partir de la primer columna de una lnea,
es una etiqueta, incluso aunque no est
terminado con dos puntos.
Etiquetas
Las etiquetas son obligatorias en las
directivas de ensamblador que definen el
valor de un smbolo (SET o EQU). En estos
casos, la etiqueta toma el valor
correspondiente a la expresin en el campo
del operando.
Etiquetas
A las etiquetas que se especifiquen en
cualquier otra directiva, instruccin o
comentario, se le asigna el valor de la
localidad de memoria en la que se definan.
Campo de operacin
Este campo es el que sigue despus de la etiqueta
y se separa de ella con un espacio en blanco
El campo de operacin no debe empezar en la
primer columna
El campo de operacin contiene alguno de los
siguientes elementos:
Una instruccin
Una directiva
El nombre de una macro
Campo de operacin
Instruccin
Las instrucciones estn definidas en el
manual de referencia del CPU HCS08.
Directivas
Son indicadores para el ensamblador que
permiten definir secciones, constantes, etc.
Macros
Al incluir el nombre de una macro, el cdigo
que ste representa se incluye en esa parte
del programa.
Modos de direccionamiento
El CPU HCS08 incluye 16 modos de
direccionamiento:
Inherente
Inmediato
Directo
Extendido
Indexado
sin offset
offset de 8 bits
offset de 16 bits
Relativo
Apuntador de la pila
offset de 8 bits
offset de 16 bits
Memoria a memoria
Inmediato a directo
Directo a directo
Indexado a directo con post
incremento
Directo a indexado con
post incremento
Indexado
con post incremento
offset de 8 bits con post incremento
Direccionamiento inherente
Las instrucciones que utilizan este
direccionamientos no tienen que buscar un
operando sobre el cual actuar.
Algunas de estas instrucciones actan sobre
los datos que se encuentran en los registros.
DIV
CLRA
PSHX
CLI
MUL
LSLA
NEGA
NOP
TAX
Direccionamiento inmediato
El operando en instrucciones con
direccionamiento inmediato se encuentra en los
bytes que siguen al cdigo de operacin.
Estos bytes son el valor del operando que
utilizar la instruccin.
Para indicar que se utilizar direccionamiento
inmediato, se utiliza el smbolo #
El operando est limitado a uno o dos bytes,
dependiendo del registro involucrado.
Direccionamiento inmediato
Algunos ejemplos de uso de este
direccionamiento son:
CPHX #$FFFF
LDA #100
LDHX #etiqueta
SUB #$A0
Direccionamiento directo
La mayora de las instrucciones que lo
utilizan pueden acceder a los primeros
256 bytes de la memoria con solo 2
bytes:
1 byte para el cdigo de operacin
1 byte para la parte baja de la direccin
efectiva
Direccionamiento directo
El uso de este modo de direccionamiento
est limitado a operandos en la pgina
directa o pgina 0 (direcciones $0000 a
$00FF)
En la pgina 0 se encuentra parte de la
memoria RAM del microcontrolador
($0040 a $023F), as como la mayora de
los registros de E/S ($0000 a $003F)
Direccionamiento directo
Algunos ejemplos de uso de este modo de
direccionamiento son:
STA $03 ;A Puerto D
LDX $00 ;Puerto A X
CPX $E0 ;Compara X con el contenido de
$00E0
Direccionamiento extendido
Utilizando este modo de direccionamiento,
las instrucciones pueden acceder a
cualquier direccin en un mapa de
memoria de 64Kbytes
Todas las instrucciones extendidas
utilizan 3 bytes:
1 byte para el cdigo de operacin
Los otros dos son el MSB y LSB de la
direccin del operando
Direccionamiento extendido
Se utiliza cuando es necesario utilizar
memoria por encima de la pgina 0
Algunos ejemplos de uso de este modo de
direccionamiento son:
ADC $5006
AND $0100
LDX $FE04
Direccionamiento indexado,
con offset de 8 bits
En estas instrucciones, el CPU suma los
bytes sin signo en H:X al byte sin signo
que sigue al cdigo de operacin. La
suma es la direccin efectiva del
operando
Estas instrucciones son tiles para
seleccionar el k-simo elemento en una
tabla de n elementos
Direccionamiento indexado,
con offset de 8 bits
Algunos ejemplos de uso de este modo de
direccionamiento son:
JMP $FF,X
STA 18,X
LDA 7,X
NEG $10,X
Direccionamiento indexado,
con offset de 16 bits
En estas instrucciones, el CPU suma los
bytes sin signo en H:X a la palabra sin
signo formada por los dos bytes que
siguen al cdigo de operacin. La suma es
la direccin efectiva del operando
Estas instrucciones son tiles para
seleccionar el k-simo elemento en una
tabla de n elementos
Direccionamiento indexado,
con offset de 16 bits
Algunos ejemplos de uso de este modo de
direccionamiento son:
JMP $20FF,X
STA $A018,X
LDA $FF00,X
JSR $1000,X
Direccionamientos de memoria a
memoria
El CPU HCS08 incorpora la capacidad de
realizar transferencia de datos directa
entre localidades de memoria.
Se utiliza la instruccin MOV.
Se cuenta con cuatro modos de
direccionamiento de memoria a memoria.
"MOV"#$27,$A0
"MOV"$04,$05
"
"MOV "X+,$01
Una vez que se ha movido el dato, H:X incrementa
su valor en 1, apuntando as a la siguiente
direccin.
"
"
"MOV "$03,X+
Una vez que se ha movido el dato, H:X incrementa
su valor en 1, apuntando as a la siguiente
direccin.
"
Direccionamiento relativo
Todas las instrucciones de salto condicional
utilizan el direccionamiento relativo para
calcular la direccin efectiva resultante.
Si la condicin es verdadera, la direccin
efectiva se carga en el PC. Si es falsa, avanza
a la siguiente instruccin.
Direccionamiento relativo
El desplazamiento es un byte en complemento a
2 que permite un rango de salto de -128 a 127
bytes desde la direccin que sigue a la del
salto.
Inicio: LDA #1
CMP #-2
BLT Inicio
; Salta si A es < -2
Fin:
BRA Fin
Direccionamiento relativo
"Inicio: "LDA #1
""CMP #-2
""BLT "Inicio "; Salta si A es < -2
"Fin: "BRA"Fin
"LDA
STA
MOV
CLRX
ciclo:
CBEQ
BRA
iguales: CLRX
ciclo2:
CBEQ
BRA
iguales2: BRA
#$FF
$10
$10,$60
X+,Iguales
Ciclo
; Sin offset
$50,X,Iguales
Ciclo2
Iguales2
; Offset de 8 bits
Directivas
Declaracin de secciones
Secciones absolutas: Directiva ORG
Permite definir secciones de datos, de constantes y
de cdigo
Var1:
Var2:
ORG
DS.B
DS.B
$50
1
1
Cnst1:
Cnst2:
ORG
DC.B
DC.B
$B000
$35
$A8
;Seccin de constantes
;Igual a FCB
ORG
CLI
CLRA
$B100
;Seccin de cdigo
Inicio:
La directiva EQU
Esta directiva asigna el valor de la expresin en
el campo del operando a la etiqueta indicada:
PTOA:
EQU $0000
RAM:
EQU $0040
DDRA:
EQU $0004
EEPROM: EQU $B000
Tarea
Investigar las directivas que se pueden
utilizar para programar el procesador
HCS08.
Un programa de ejemplo
$include M9S08LC60.inc
RAM
ROM
VECT
inicio:
fin:
EQU
EQU
EQU
$0040
$B000
$FFDC
ORG
LDA
ADD
STA
BRA
ROM
#$18
#$A0
RAM
fin
; Seccin de EEPROM
ORG
DC.W
VECT+$22
inicio