Professional Documents
Culture Documents
MICROCONTROLADORES
SET DE INSTRUCCIONES
PROFESOR:
GRUPO:
7CM5
INTRODUCCION Aqu aplicaremos el set de instrucciones que se utilizan a mayores rasgos a lo largo del semestre. Cada uno tiene una funcin especfica que se desarrollara en cada parte de esta material didctico dedicada para el set de instrucciones, son alrededor de 7 y son: -modo de registros -modo x(Rn) -modo indexado -modo simblico -modo absoluto & -modo inmediato(#) -modo indirecto de registro @Rn -modo indirecto de registro auto incrementado (@Rn+) Para mas detalle los elementos que se estn utilizando de acuerdo los bits se rigen por dos niveles de palabra: la Terminal esta dirigida por .w que tiene 16 bits de palabra y .B que tiene 8 bits por palabra que determina un mnimo de caracteres presentado en el programa. De acuerdo al programa se utilizaran los bits de 16 o 8 de forma tal que el programador decidir su uso y conveniencia de todos los set encontrados. Modo de registro (Rn) Permite mover un elemento del registro a un elemento del registro destino. Un ejemplo es el siguiente. Queremos mover los datos que se encuentran en el siguiente valor en forma de palabra. Ejemplo: Mov.w R10, R11 antes Despus R10 0xA023 0xA023 R11 0xFA15 0xA023 En forma de 8 bits es llamado mov.b queda: Ejemplo: Mov.b R10, R11 antes Despus R10 0x23 0x23 R11 0x15 0x23
Modo de registro indexado X(Rn) Mueve los contenidos de la fuente (los contenidos de R5 + 2 ) a el destino. La fuente y el destino de registro (R5 yR6) no son afectados. En el modo indexado los programas cuentan con incrementado automticamente as que el programa continua ejecutndose con la siguiente instruccin. En el nivel de palabra debe ser en valores pares, no funciona en impares La funcin a hacer es la siguiente Ejemplo: Mov.w 2(R5), 6(R6):
Antes Memoria 0xFF16 0xFF14 0xFF12 0x1094 0x1092 0x1090 0x1084 0x1082 0x1080 Direccin 0x0006 0x0002 0x4596 0x0123 0x5555 0x9123 0x4569 0x1234 0x5678 si: R5 R6 Queda como: R5 R6 0x1080 0x108C desplazado 0x1092 0x1082 0x1094 0x1092 0x1090 0x1084 0x1082 0x1080 0x0123 0x1234 0x9123 0x4569 0x1234 0x5678 Despus Memoria 0xFF16 0xFF14 0xFF12 Direccin 0x0006 0x0002 0x4596
Lo nico que hace es que desplaza los elementos que se encuentran en 2(R5) a 6(R6) respetando que siempre sern pares. Ahora en 8 bits no importa que sea par o impar as que realizaremos el siguiente ejercicio. Ejemplo: Mov.b (R5), 6(R6)
Antes Direccin 0x200 0x201 0x202 0x203 0x204 0x205 0x206 0x207 0x208 Memoria 0x01 0x00 0x45 0x12 0x55 0x91 0x26 0x13 0x56 si: R5 R6 Queda como: R5 R6 0x200 0x201 desplazado 0x200 0x207 0x203 0x204 0x205 0x206 0x207 0x208 0x12 0x55 0x91 0x26 0x01 0x56 Despus Direccin 0x200 0x201 0x202 Memoria 0x01 0x00 0x45
Modo simblico (ADDR) Mueve los contenidos de la fuente EDE(contenidos de Pc + x) a el destino TONI(contenido de PC +y). La palabras antes de las instrucciones contienen las diferencias entre la PC y la fuente o direccin destino. Calcula las partes y las inserta en X y Y automticamente. Con el modo simblico el programa puede contar(PC) los incrementos automticamente as que el programa continua ejecutando con la siguiente instruccin. Siempre se respetan los valores pares en los niveles de palabra. Ejemplo: Mov.w TONI, 2(R5)
Antes Memoria 0xFF16 0xFF14 0xFF12 0x1094 0x1092 0x1090 0x1084 0x1082 0x1080 Direccin 0x0006 0x0002 0x4596 0x0123 0x5555 0x9123 0x4569 0x1234 0x5678 si: EDE TONI R5 0x1080 0x1082 0x1090 Despus Memoria 0xFF16 0xFF14 0xFF12 0x1094 0x1092 0x1090 0x1084 0x1082 0x1080 Direccin 0x0006 0x0002 0x4596 0x0123 0x1234 0x9123 0x4569 0x1234 0x5678
Modo absoluto &(ADDR) Mueve los contenidos de la fuente direccin EDE a la direccin destino TONI. Las palabras antes de la instruccin contienen la direccin absoluto de la fuente y el destino. Con el modo absoluto, la PC incrementa automticamente as que la ejecucin del programa contina con la siguiente instruccin. En este modo es para todos los registro de un subsistema. Ejemplo: Mov.w.&TONI,&EDE
Antes Memoria 0xFF16 0xFF14 0xFF12 0x1094 0x1092 0x1090 0x1084 0x1082 0x1080 Direccin 0x0006 0x0002 0x4596 0x0123 0x5555 0x9123 0x4569 0x1234 0x5678 si: EDE TONI R5 0xFF16 0x1084 0x1090 Despus Memoria 0xFF16 0xFF14 0xFF12 0x1094 0x1092 0x1090 0x1084 0x1082 0x1080 Direccin 0x0006 0x0002 0x4596 0x0123 0x1234 0x9123 0x0006 0x1234 0x5678
4(R5)
0x206
Modo de registro indirecto (@Rn) Mueve lo contenido de la fuente direccin (contenido de R10) a el destino (Contenido de R11). El registro no es modificado. A nivel de palabra siempre ser en par. Ejemplo Mov.w @R4, R8
Antes Direccin 0x200 0x201 0x202 0x203 0x204 0x205 0x206 0x207 0x208 Memoria 0x01 0x00 0x45 0x12 0x55 0x91 0x26 0x13 0x56 si: R4 R5 R8 Despus Direccin 0x200 0x201 0x202 0x203 0x204 0x205 0x206 0x207 0x208 Memoria 0x01 0x01 0x4501 0x12 0x55 0x91 0x01 0x01 0x56
Modo autoincremento indirecto (@Rn+) Mueve los contenidos de la fuente (contenidos de R10) a el destino(contenido de R11). Registra R10 y lo incrementa por un byte de operacin o dos para palabra antes de alcanzarlo, este punto avanza sin necesidad de una sobrecarga. Este es til para tablas de procesado. El valor + incrementa el valor cuando ya se hizo la operacin. A nivel de palabra se incrementa valor de 2.Cuando realiza lo que hay en R10 empezara el incremento. En la tabla aparecer ya el recorrido de R10 a R11 para que pueda hacer la siguiente funcin. Ejemplo: Mov. W @R10+, 0(R11)
Antes Memoria 0xFF16 0xFF14 0xFF12 0x1094 0x1092 0x1090 0x1084 0x1082 0x1080 Direccin 0x0006 0x0002 0x4596 0x0123 0x5555 0x9123 0x4569 0x1234 0x5678 si: R10 R11 Despus Memoria 0xFF16 0xFF14 0xFF12 0x1094 0x1092 0x1090 0x1084 0x1082 0x1080 Direccin 0x0006 0x0002 0x4596 0x0123 0x1234 0x9123 0x4569 0x4596 0x0002
0xFF12 0x1080
Modo Inmediato (#N) Mueve la constate de 45h, El cual contiene en a palabra la siguiente instruccin para la direccin de destino TONI. Cuando alcanza la fuente, el programa cuenta los puntos para la siguiente palabra instruccin y la mueve al contenido destino. Para ser nfasis este modo solo da el valor deseado que necesitamos sin buscarlo en memoria, solo se manda directo a travs de la funcin # para obtenerla, es decir tu das tu propia localidad de memoria. Ejemplo: Mov.w #0x2541, R11
Antes Memoria 0xFF16 0xFF14 0xFF12 0x1094 0x1092 0x1090 0x1084 0x1082 0x1080 Direccin 0x0006 0x0002 0x4596 0x0123 0x5555 0x9123 0x4569 0x1234 0x5678 si: R10 R11 0xFF12 0x1080 Despus Memoria 0xFF16 0xFF14 0xFF12 0x1094 0x1092 0x1090 0x1084 0x1082 0x1080 Direccin 0x0006 0x0002 0x4596 0x0123 0x1234 0x9123 0x4569 0x4596 0x2541