Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Instrucciones de carga:
Transfieren datos desde la memoria a uno de los registros internos del HC12, estas instrucciones no
afectan a la memoria ya que solo la leen sin embargo el registro destino adquiere un nuevo valor. Se
pueden leer directamente datos de 8 y de 16 bits. Las instrucciones de carga (excepto LEA_ )afectan a las
banderas N y Z para que pueda detectarse cuando el valor cargado es cero o negativo sin necesitar
instrucciones adicionales. La tabla 1 muestra el resumen de las instrucciones de carga.
TABLA 1
Las instrucciones LEA_ cargan el registro de 16bits especificado con el valor de la dirección efectiva
según el modo de direccionamiento que se indica en el programa, por ejemplo la instrucción LEAS 3,X
carga en el SP la dirección efectiva que resulta del modo de direccionamiento 3,X osea carga en el SP
IX+3 contrario a la instrucción LDS 3,X que carga en SP el valor almacenado en la dirección IX+3
(SP(H) <= M(IX+3) SP(L) <= M(IX+4))
TABLA 2
Instrucciones de transferencias e intercambios
Las instrucciones de transferencias copian el contenido de un registro a otro registro sin alterar el registro
origen, la instrucción TFR (Transfiere Registro) es universal pero se aceptan otros mnemónicos por
compatibilidad tales como TAB TAP etc.
Las instrucciones de intercambios intercambian el contenido de los acumuladores o de un par de registros,
la tabla 3 presenta un resumen de las instrucciones de intercambios y transferencias.
Instrucciones Del HC12
Instrucciones de Intercambio
Instrucciones de Transferencia
TABLA 3
Ni las instrucciones de intercambio ni de transferencia afectan a la memoria estas últimas si afectan a las
banderas N y Z.
Instruccion SEX
Transfiere el contenido de uno de los acumuladores A, B o CCR a cualquiera de los registros de 16bits D,
IX, IY o SP realizando la extensión del signo o sea los ocho bits mas significativos se igualan al bit mas
significativo de cualquiera de los dos acumuladores o del CCR, por ejemplo si A = $85 y se ejecuta la
instrucción SEX A,D el valor final en D será $FF85 si por el contrario A hubiese sido $7F entonces el
resultado en D hubiese sido $007F. La tabla 4 muestra el resumen de la instrucción SEX.
TABLA 4
Instrucción “MOVE”
Estas instrucciones mueven bytes o palabras de una posición de memoria origen (M1, (M : M+1)1) a una
posición de memoria destino (M2, (M : M+1)2), las direcciones del origen y del destino pueden
especificarse en cualquiera de los modos de direccionamientos revisados anteriormente exceptuando que
el destino no puede ser inmediato las siguientes son las combinaciones posibles:
(IMM EXT, IMM IDX, EXT EXT, EXT IDX, IDX EXT, IDX IDX) la tabla 5 resume
las instrucciones MOV
Instrucciones Del HC12
TABLA 5
IMM => EXT es de inmediato a extendido osea un valor fijo a una dirección de 16bits.
Ejemplo: movb #$ff,$400 ; copia $ff en la dirección $400.
IMM => IDX de inmediato a indexado osea de un valor fijo a una dirección indexada
Ejemplo: ldx #$410
movw #$b6, 4,x ;Escribe #$00b6 en la dirección $414
movb #$b4, 4,-x ;Escribe #$b4 en la dirección $40c IX cambia a $40c
movb #$b5, 4,x- ;Escribe #$b5 en la dirección $410 IX cambia a $40c
;Tambien puede ser x+ o +x la constante solo puede variar entre 1 y 8
EXT => EXT de extendido a extendido para un byte o word desde una dirección de 16bits a otra
dirección de 16bits.
Ejemplo: movb #$a8,$400 ;Escribe $a8 en la dirección $400
movb $400,$410 ;Copia M($400) en la dirección $410
EXT => IDX de extendido a indexado para un byte o word desde una dirección de 16b a otra
dirección especificada en base a indexado.
Ejemplo: ldx #$410
movw #$1f8,$410
movw $410,4,+x
Instrucciones Del HC12
Instrucciones de suma y resta
La suma y la resta de números con o sin signo de 8 o de 16bits puede ser realizada usando las
instrucciones de suma y resta. La operación puede hacer la suma o resta de datos en los
registros internos o suma y resta de datos de memoria y los registros internos de HC12.
Operaciones especiales de suma y resta incluyen al bit C del CCR para posibilitar operaciones
con múltiples bytes de precisión. La tabla 6 resumen las operaciones de suma y de resta del
HC12.
TABLA 6
Las instrucciones ABY (Y = B+Y) y ABX (X = B+X) se considera que el valor de B representa un
número de 8 bits sin signo.
Instrucciones BCD
Para sumar números BCD solo hay que realizar la operación con instrucciones que manejen el
acarreo medio ‘H’ y utilizar luego la instrucción DAA que ajusta el resultado de binario a BCD. La
tabla 6a presenta un resumen de las instrucciones que pueden usarse para suma BCD
TABLA 6a
Por ejemplo si A = $45 y B = $29 el resultado de ABA arroja que A = 6E pero ejecutar
Instrucciones Del HC12
posteriormente la instrucción DAA produce que A cambie a $74 que es el resultado de sumar 45
+ 29 asumiendo BCD.
TABLA 7
TABLA 8
Instrucciones lógicas
Estas instrucciones realizan las operaciones del algebra booleana entre uno de los
acumuladores de ocho bit y un dato en la memoria o entre el registro CCR y la memoria. Solo se
pueden realizar las operaciones AND, OR y XOR. La tabla 9 presenta el resumen de estas
instrucciones
TABLA 9
La operación lógica se realiza bit a bit cada bit del acumulador se opera contra el bit
correspondiente de la memoria por ejemplo si A = $F5 y M = $0F entonces la instrucción ANDA
produce A= $05 mientras que ORAA resulta A = $FF y EORA produce A = $FA
TABLA 10
Instrucciones de multiplicación y división
La multiplicación se aplica a números enteros de 8 y 16 bits con signo o sin signo, cuando se
multiplican dos números de 8 bits el resultado es un entero de 16bits, cuando se multiplican dos
números de 16 bits el resultado es un entero de 32bits.
TABLA 11
Instrucciones Del HC12
La división fraccionaria
Implica un dividendo menor que el divisor, mientras que una división entera implica un dividendo
mayor o igual al divisor.
Signo
En la división con signo el signo del cociente es de acuerdo a las reglas de la división algebraica
(signos iguales => positivo; signos diferentes => negativo) el signo del residuo es igual al signo
del dividendo.
TABLA 12
En la tabla ‘mm’ representa la máscara, el ‘•’ indica la operación lógica AND y + representa la
operación lógica OR. La máscara ‘mm’ no es mas que un valor de 8bits que señalan con 1 los
bits de interés, de tal forma que si mm = #$80 entonces el bit en cuestión es el b7, mientras que
si mm = #$01 el bit en cuestión es el b0, mm se puede referir a mas de un bit por ejemplo la
instrucción BCLR M,#$81 produce el borrado de los bits b7 y b0 de la memoria.
TABLA 13
Instrucciones de ramificación
Las instrucciones de ramificación producen que la ejecución de instrucciones se mude a una
diferente secuencia en caso tal que se cumpla la condición especificada. El HC12 respalda tres
tipo de instrucciones de ramificación: las ramificaciones cercanas las lejanas y las condicionadas
Instrucciones Del HC12
a bits.
Las instrucciones de ramificación pueden ser clasificadas también de acuerdo al tipo de
condición que debe cumplirse para que se ejecuten, algunas instrucciones entran en mas de una
clasificación
Ramificaciones unitarias son las que siempre se ejecutan.
Ramificaciones de condiciones simples solo dependen de un bit específico del CCR cuyo
estado fue definido por la ejecución de una instrucción precedente.
Ramificaciones sin signo son las que la condición resulta por la comparación de números
sin signo que resulta en el establecimiento o borrado de los bits Z y C en el CCR.
Ramificaciones con signo son las que la condición resulta por la comparación de
números con signo que resulta en el establecimiento o borrado de los bits N, Z y V del
CCR.
Ramificaciones cercanas
Son instrucciones que operan así: cuando la condición especificada se cumple un número con
signo de 8bits se le suma al PC y así la ejecución continua a partir de esta nueva posición. El
alcance de la bifurcación se limita a 127 ($7F) posiciones en avance y 128 ($80) en retroceso. La
tabla 14 es resume las instrucciones de ramificación corta.
TABLA 14
Ramificaciones lejanas
Instrucciones Del HC12
Estas instrucciones operan de manera similar a las lejanas la única diferencia es que el
desplazamiento puede ser un número de 16 bits lo que involucra que el destino de la ramificación
puede estar 32767 posiciones adelante ó 32768 posiciones hacia atrás. Este tipo de ramificación
es útil cuando el destino final reside muy alejado del punto donde se realiza la comparación, la
tabla 15 presenta un resumen de las instrucciones de ramificación lejana.
TABLA 15
TABLA 16
En este cuadro el punto en la columna Equation or Operation representa la operación AND que
se usa para determinar la condición que define si la ramificación se ejecuta o no.
TABLA 17
Instrucciones de y de salto a subrutinas
Estas instrucciones producen un cambio en la secuencia de instrucciones que se estén
ejecutando. Cuando esta instrucción se ejecuta se carga en el PC la dirección absoluta de la
nueva ubicación de la secuencia de instrucciones la cual puede estar establecida en cualquier
dirección dentro del rango de 64K que constituye el mapa de memoria del HC12. La dirección
absoluta puede ser obtenida de forma explícita como un número de 16 bits o a través de
cualquier de los modos de direccionamiento ya estudiados.
Las subrutinas son mecanismos optimizados para transferir la ejecución de la secuencia a un
grupo de instrucciones que poseen un fin determinado. Existen diferentes formas de invocar una
subrutina:
Usando una ramificación cercana (BSR) máximo 127 posiciones adelante o 128
Instrucciones Del HC12
posiciones en reversa.
Por medio de un salto absoluto (JSR) dentro del mapa de memoria de 64K o
Usando un salto expandido (CALL) a cualquier dirección dentro del mapa de memoria de
16Mbytes del HC12
Cuando se ejecuta una de estas instrucciones la dirección de retorno (PC) se deposita en la
pila antes de cargar en el PC la dirección de la subrutina. Las subrutinas que están dentro del
mapa de memoria de 64K (BSR y JSR) son finalizadas con la instrucción RTS la cual saca de
la pila el valor del PC así la ejecución normal de la secuencia continúa después de la
instrucción BSR o JSR. Cuando se usa JSR la dirección de la subrutina puede ser
especificada usando cualquier de los modos de direccionamiento estudiados. BSR solo
especifica el modo relativo.
La instrucción de CALL se utiliza cuando la subrutina se encuentra fuera del mapa de
memoria de 64K. CALL mete en la pila el valor del registro PPAGE y el PC que constituye la
dirección de retorno completa (24bits), la dirección de la subrutina puede ser especificada
usando cualquier de los modos de direccionamiento en este caso el valor de la página es un
operando inmediato para todos los modos excepto para los indexados indirectos en estos
modos el operando apunta a una posición de memoria donde el valor de PPAGE y la
dirección de la nueva subrutina residen. Para terminar una subrutina invocada con CALL se
usa la instrucción RTC en vez de la RTS, la RTC saca de la pila el valor del PPAGE y del PC
retornando para ejecutar la siguiente instrucción después del CALL. Si se usa RTS en vez
solo se saca de la pila el PC la cual sería la dirección incorrecta. CALL y RTC constituyen un
par que implementan las llamadas a subrutinas en direcciones expandidas. La tabla 18
resume las instrucciones
TABLA 18
Instrucciones Del HC12
Instrucciones de interrupción
Las instrucciones de interrupción entregan la secuencia de control a una subrutina que
realiza una operación que es crítica para el sistema. Las subrutinas de interrupción son
usualmente llamadas Excepciones.
SWI (software interrupts) inicia el procesamiento sincrónico de una excepción apilando
primero la dirección de retorno en el PC y luego el contexto del programa en ejecución (todos
los registros incluyendo el CCR) a continuación la ejecución de la excepción a partir de la
dirección en el vector SWI.
La ejecución de SWI produce una interrupción sin que haya una solicitud de interrupción por
lo que esta no puede ser inhibida por las máscaras ‘I’ ni ‘X’ del CCR. La ejecución de SWI
establece la máscara ‘I’ del CCR inhibiendo futuras solicitudes de interrupción. La máscara ‘I’
usualmente se borra cuando a través de la ejecución de la instrucción RTI al final de la
excepción restablece el valor original del CCR incluyendo la máscara ‘I’.
La instrucción RTI es usada para terminar todas las excepciones incluyendo las rutinas que
dan servicio a la interrupción. RTI primero recupera el CCR, D, X, Y y luego la dirección de
retorno de la pila, si no hay otra interrupción pendiente entonces la ejecución de la secuencia
normal después de la instrucción SWI o desde donde se presentó la petición de interrupción
continúa.
El núcleo del HC12 utiliza interrupciones de software para atrapar la ejecución de opcódigos
que no han sido implementadas existen opcódigos en todos los 256bytes de la página 1 pero
solo 54 en la página 2 si por alguna falla el CPU trata de ejecutar alguna instrucción que no
ha sido implementada entonces ocurre una interrupción tipo TRAP. La tabla 19 resume las
instrucciones de interrupción
TABLA 19
Instrucciones de pila
Se usan para depositar datos en la pila o para extraer datos de la pila, PSH_ deposita el
registro en la pila pre-modificando automáticamente el registro SP. PUL_ recupera el registro
de la pila con la pos-modificación del SP. La pila trabaja como una estructura de memoria
LIFO por lo que el último dato en depositarse es el primero que debe recuperarse. La tabla 20
las muestra
Instrucciones Del HC12
TABLA 20
Instrucciones del CCR
La tabla 21 presenta las instrucciones que pueden modificar las banderas del CCR de
manera directa
TABLA 21
Instrucciones STOP y WAIT
Estas instrucciones pueden poner al microprocesador en un estado de hibernación en el cual
el consumo de energía se reduce.
La instrucción de STOP mete en la pila la dirección de retorno y el contenido de todos los
registros y acumuladores y luego detiene todos los relojes.
WAIT mete en la pila la dirección de retorno y el contenido de todos los registros y
acumuladores no obstante los relojes no se detienen
Tanto STOP como WAIT requieren una excepción para salir de hibernación. La tabla 22
muestra estas instrucciones.
Instrucciones Del HC12
TABLA 22