Documentos de Académico
Documentos de Profesional
Documentos de Cultura
4/5/16, 10:20 AM
Ms
Siguiente blog
Crear blog
Acceder
Danni Flhz
Se ha producido un error en este gadget.
Insignia de Facebook
Danni Flhz
Objetivo:
Hacer uso de las distintas instrucciones para el HCS12 en el programa
code warrior, con el fin de aplicar y entender cada uno de ellos.
Material y Equipo:
Computadora personal
Programa: Code Warrior
Marco Terico:
El procesador o CPU. Es el elemento ms importante del microcontrolador y determina
sus principales caractersticas, tanto a nivel hardware como software.
Se encarga de direccionar la memoria de instrucciones, recibir el cdigo OP de la
instruccin en curso, su decodificacin y la ejecucin de la operacin que implica la
instruccin, as como la bsqueda de los operandos y el almacenamiento del resultado. A
continuacin se explica de manera general como est formado un procesador. La funcin
esencial de un procesador se describe en lo que se conoce como ciclo de ejecucin
consiste en 1.Traer una instruccin de la Memoria, 2. Decodificar la instruccin y 3.
Ejecutar la instruccin, el ciclo contina indefinidamente. El primer paso se realiza en
varias etapas, puesto que tiene que acceder a la memoria para leer la instruccin, esto
requiere enviar la direccin donde se encuentra la instruccin, las seales de lectura y
seleccin de la memoria se envan mediante un grupo de seales que forman el bus de
control.
Desarrollo:
Instrucciones de carga y almacenamiento.
Las instrucciones de carga copian el contenido de una localidad de
memoria a un acumulador o registro, ntese que el contenido de la
memoria no cambia debido a la operacin de carga. En cambio las
instrucciones de almacenamiento copian lo que se encuentra en un
acumulador o registro del CPU a una localidad de memoria sin alterar el
valor que se encuentre en el registro o acumulador del CPU.
Las instrucciones de carga se representan con las iniciales LD que
quiere decir Load, la segunda parte del mnemnico depende del
acumulador o registro que se est utilizando, ya sea el acumulador A, B
o los registros X, Y o SP (de los cuales SP no es recomendable usar si
no se tiene suficiente experiencia programando) que se representan de
la siguiente manera LDAA, LDAB, LDD, LDX, LDY, LDS.
Para tener un concepto ms detallado a continuacin se vera una tabla
que muestra los cdigos objetos que se generan para el acumulador A
cuando se le carga el contenido de una localidad de memoria, ntese
que este cdigo vara dependiendo del modo de direccionamiento que
http://danniflhz.blogspot.com/2014_04_01_archive.html
Crea tu insignia
Seguidores
2016 (1)
2014 (1)
abril (1)
Manejo de instrucciones
bsicas del procesador
HCS...
2012 (2)
2011 (6)
Datos personales
4/5/16, 10:20 AM
se est usando.
Para ejemplificar esto, veamos ahora como en el simulador de code
warrior se representa el cdigo objeto en los distintos acumuladores y
registros.
Para las instrucciones de almacenamiento al igual que las instrucciones
de carga se reprecentan con un mnemnico, el cual inicia con ST y
dependiendo del acumulador o registro es la terminacin de este, las
cuales son STAA, STAB, STD, STX, STY, STS (del cual no se
recomienda usar el STS sin alta experiencia como programador). Como
demostracin a continuacin se mostrara una tabla con los cdigos
objetos de almacenamiento para el acumulador A.
Si somos observadores notaremos que en diferencia con la tabla de
carga, la de almacenamiento no se puede usar el modo de
direccionamiento inmediato, ya que si hacemos uso del sentido comn
nos daremos cuenta que no se puede guardar a un valor desde un
acumulador o registro, sino solamente a localidades de memoria.
Para ilustrar esto, se mostrara como se almaceno desde los registros a
localidades de memoria:
Transferencia, intercambio y extensin de signo.
La instruccin de transferencia copia el contendi de un acumulador o
registro a el contenido de otro acumulador o registro. Se pueden hacer
transferencias de A a B usando la instruccin TAB, de B a A usando la
instruccin TBA. Tambin hay una instruccin que podra decirse que es
universal dentro de las instrucciones de transferencias, ya que no
necesita un mnemnico relacionado con algn la letra de acumulador o
registro, este mnemnico es TFR, capaz de transferir (copiar) de
cualquier acumulador o registro a cualquier otro acumulador o registro
no importando la cantidad de bits que se quieran transferir.
En comparacin con las instrucciones de transferencia, la instruccin
EXG intercambia los valores de ambos acumuladores o registros, por
ejemplo si en A<=$20 y en B<=30, despus de usar la instruccin EXG
ahora los acumuladores tendrn A<=30 y en B<=20. Hay que tomar en
cuenta que si queremos intercambia un dato de 16 bits a un acumulador
de solo 8 bits, se perder la parte alta del dato de 16 bits, en cambio si
queremos intercambiar un dato de 8 bits a un registro de 16 bits, se
har a la parte baja del registro llenando con ceros la parte ms alta de
este registro.
Para la extensin de signo, hay una instruccin especial SEX, ya que
cuando transferimos o intercambiamos de una acumulador de 8 bits a un
registro de 16 bits este dato quede en la parte baja del registro (como ya
se explic anteriormente), entonces si este dato es negativo al momento
de que este en un registro de 16 bits se har positivo ya que el ultimo bit
es el que define si es positivo o negativo el dato (1-> negativo, 0->
positivo). Para hacer el cambio de signo se utiliza la instruccin SEX, la
cual rellena con 1s en lugar de 0s los otros 8 bits del registro de 16 bits,
y de esta manera el dato que anteriormente era de 8 bits y se transfiri o
intercambio al de 16 bits ya conserve el signo negativo en caso de que lo
haya sido.
Ver todo mi
perfil
Amazon Deals
Intercambio de datos:
http://danniflhz.blogspot.com/2014_04_01_archive.html
Page 2 of 7
4/5/16, 10:20 AM
Sumas y restas.
La suma entre registros y registro, y registro y memora de 8 y 16 bits con
y sin signo. Tambin hay instrucciones de suma que suman el bit de
acarreo (carry) en el CCR. Al igual que en la suma tambin en la resta
se puede hacer entre registro y registro y registro y memoria de 8 y 16
bits con signo y sin signo. Y al igual que en las sumas se usa un bit de
acarreo del CCR, pero en esta ocasin nos sirve como pedir prestado
(borrow).
Como se mencion anteriormente, se considera un bit del CCR para
realizar la suma o resta en algn registro o memoria, adems de que se
alteran los registros de las banderas medio acarreo (H), signo (N), cero
(z), sobrecupo (V) y por supuesto el acarreo (C). Algunas de estas
instrucciones son solamente inherentes como la suma y resta entre
registros, en cambio la suma y resta entre un registro y memoria los
modo de direccionamiento son los complementarios al inherente, es
decir, aplican el resto de los modos de direccionamiento. A continuacin
se mostrara la lo anterior dicho de los modos de direccionamiento.
Ejemplificando la suma entre registros se realiza una suma entre
registros A + B ($70 + $90) y el resultado de esta suma es $100, en el
cual en el procesador solo nos dar el resultado de $00, ya que se
queda cargado el resultado de esta operacin en acumulador A (y este
es de 8 bits), entonces se queda el resultado de $00 ah, pero se activa
la bandera de acarreo y esto nos indica que el resultado de esta
operacin es un nmero mayor a 8 bits.
Ahora, para la suma de un registro con memoria, al igual que en el
ejemplo anterior se usa el modo de direccionamiento inmediato. Hay que
notar que el ejemplo anterior para cargar los datos que se usaron se
utiliz el modo inmediato, pero solo para cargar el dato, no para realizar
la operacin, como ya se haba explicado anteriormente en la suma o
resta entre registros solo se puede usar el modo inherente. Ahora, para
el siguiente ejemplo de suma que se realizara entre registro y memoria
se suma al $00 un $FF, entonces esto nos dar como resultado $FF,
pero hay que notar el para esta instruccin se toma en cuenta el carreo y
en caso de que el bit este activado debido al resultado de la suma
anterior, entonces se le suma 1 al resultado de la operacin, es decir,
$FF+1 y el resultado efectivo de esta suma (por as llamarlo) es $00 y se
vuelva a activar el bit de acarreo, porque el resultado real es $100.
Para el caso de la resta ocurre lo mismo, pero en lugar de ser acarro es
pedir prestado (carry/borrow).
Instrucciones BCD
Las instrucciones BCD, son usadas para ajustar un nmero hexadecimal
a un nmero decimal, una de las principales condiciones es que los
nmeros en hexadecimal no contengan letras, es decir, que los
operandos no sean mayores a $9. Para el uso de ajuste decimal se usan
las instrucciones de suma que consideran el medio acarreo (H) del CCR,
y despus se ajusta el resultado de la operacin usando la instruccin
DAA. Para ejemplificar esto, se realizara una suma entre un registro y
memoria despus, como el resultado est en el registro B se cambia al
registro A para poder realizar el juste decimal.
Instrucciones de decrementos e incrementos.
Estas instrucciones pueden ser usadas para registros de 8 y 16 bits.
Estas instrucciones se usan o aplican para realizar contadores
ascendentes o descendentes, ya que el bit de acarreo (C) en el CCR no
afecta. A continuacin se mostrara una tabla de los distintos tipos de
http://danniflhz.blogspot.com/2014_04_01_archive.html
Page 3 of 7
4/5/16, 10:20 AM
decrementos e incrementos.
Hay que destacar que estas instrucciones son inherentes, si se desea
guardar en una localidad de memoria como por ejemplo, una tabla se
pueden usar varios mtodos distintos, pero en si, estas instrucciones son
puramente inherentes.
A continuacin se presentara una aplicacin de un contador y llenado de
una tabla con los resultados.
En este ejemplo primero se carga la direccin de la tabla (que para este
caso est en el origen de la RAM) despus el valor de inicio $FF, y por
sentido comn sabremos que ser un contador descendente. Despus
se guarda en cierta localidad de memoria, que para este caso es la
primera localidad de la direccin de la tabla, y por ltimo se incrementa
el ndice de la tabla, por lo tanto cambia de direccin despus de haber
guardado el valor, y posteriormente decrementamos 1 al valor inicial
provocando que este vaya contando descendentemente, y como dije
anteriormente guardando los datos, generando una tabla de 255 datos.
Instrucciones de comparaciones:
Estas instrucciones se utilizan para hacer una prueba a un registro o a
una localidad de memoria, la manera de comparar es haciendo una resta
entre lo que se dece comparar, pero a diferencia de las instrucciones de
resta en esta resta que se realiza en la comparacin no se genera
resultado alguno, solo se afectan las banderas del CCR. Estas
instrucciones son usualmente usadas para establecer las condiciones de
para las instrucciones de bifurcacin.
Como ejemplo de esto, se realiza una comparacin un cero de un
registro, para esto se usa la instruccin de TSTA, la cual compara con
cero la localidad de memoria A, esto con el fin de activar la bandera Z,
en caso de que sea igual a cero lo que se encuentre cargado en el
acumulador A. se hace una bifurcacin o salta a otra seccin de
programa.
Operaciones lgicas.
Para las operaciones lgicas booleanas se realizan operaciones entre
acumuladores, memoria e incluso el CCR. Las operaciones lgicas que
se realizan son AND, OR y OR exclusiva.
A continuacin se mostrara la tabla de las distintas instrucciones
booleanas que se pueden usar.
Como ejemplo de esto, se realiza una operacin entre el acumulador A y
una localidad de memoria (en modo inmediato) de la cual se realizara la
operacin booleana AND, donde el resultado se quedara cargado en el
registro A, notemos que esta instruccin se puede usar como
enmascaramiento de bits,de manera que solo los bits que sean 1s tanto
en la memoria como en el registro son los que se mantendrn iguales en
http://danniflhz.blogspot.com/2014_04_01_archive.html
Page 4 of 7
4/5/16, 10:20 AM
Multiplicacin y divisin.
Dentro de las instrucciones de multiplicaciones y divisin, hay
operaciones con signo y sin signo. Las operaciones de 8 bits tienen un
producto de 16 bits y las multiplicaciones de 16 bits tienen productos de
32 bits. Para las divisiones, ocurre algo similar, pero inverso, ya que si se
tiene un dividendo de 16 bits y un divisor de 8 bits y se produce un
consiente y residuo de 8 bits cada uno, pero tambin hay divisiones con
un dividendo de 32 bits y un divisor de 16 bits y estos tiene un cociente y
residuo de 16 bits cada uno. Para ver esto ms claro se mostrara la tabla
de instrucciones y se podr apreciar que registros se concatenan para
formas 32 bits tanto en multiplicaciones como en divisiones.
Como se puede apreciar en la tabla, para hacer uso de multiplicaciones
de 32 bits se usa como producto el registro Y y D para formar un
producto de 32 bits, de tal manera que en el Y queda la parte alta del
producto y en D la parte baja del producto. Para el dividendo de las
divisiones ocurre exactamente igual, se usa el registro Y para la parte
ms alta y el registro D para la parte ms baja. A continuacin se ver un
ejemplo para tener esto ms claro.
http://danniflhz.blogspot.com/2014_04_01_archive.html
Page 5 of 7
4/5/16, 10:20 AM
Conclusiones:
Durante la prctica se aprendi en funcionamiento de cada una de las
instrucciones del HCS12, adems de ver los diferentes modos de
direccionamiento que se utilizan en cada una de las instrucciones
haciendo sencillos programas demostrativos.
Bibliografa:
El Microcontrolador HCS12
TutorialHC12:http://caos.uab.es/~dlugones/courses_archivos/HC12tutori
al.pdf
HCS12_CPU
www.freescale.com http://michelletorres.mx/modos-de-
http://danniflhz.blogspot.com/2014_04_01_archive.html
Page 6 of 7
4/5/16, 10:20 AM
direccionamiento/#.UwbKDPl5O1U
Apuntes vistos en clase
Escritos por alumno de ingeniera en electrnica: Juan Daniel Flores
Gutirrez
Publicado por Ing. Daniel Flores en 20:56
Reacciones:
divertido (0)
No hay comentarios:
interesante (0)
guay (0)
Entradas ms recientes
Pgina principal
Entradas antiguas
http://danniflhz.blogspot.com/2014_04_01_archive.html
Page 7 of 7