Sei sulla pagina 1di 11

Fundacin Duoc UC Sede Antonio Varas

Instrucciones bsicas El conjunto de instrucciones de los microprocesadores consisten en un pequeo repertorio de instrucciones de 12 bits, que pueden ser agrupadas para su estudio en tres a cinco grupos. En este caso se ha optado por clasificarlas, desde el punto de vista del programador, de acuerdo con la funcin y el tipo de operandos involucrados. En primer lugar se analizaran las instrucciones que operan solo sobre el registro W y que permiten cargarle una constante implcita o incluida literalmente en la instruccin (literales). Instrucciones de un Byte (una direccin de memoria) que operan sobre W y Literales Estas instrucciones se refieren todas al registro W, es decir que uno de los operandos de origen y el operando de destino son siempre el registro W. En las instrucciones de este grupo que tienen un segundo operando de origen, este es siempre una constante de programa literalmente incluida en la instruccin, llamada constante literal o simplemente literal. El formato genrico de estas instrucciones es el siguiente:

Los bits 0 a 7 especifican la constante literal de 8 bits que se utilizara en la operacin, el resto de los bits indican la instruccin a ejecutar. Las tres instrucciones que siguen son las operaciones lgicas tradicionales, similares a las que ya vimos anteriormente, pero realizadas entre una constante de programa y el registro W : 1) IORLW k ; operacin OR lgica, EJ: IORLW 0x0D W=Wk ; Efecta la operacin OR entre el contenido del registro W y el valor 0D. El resultado lo guarda en el registro W.

2) ANDLW

; operacin AND lgica, W = W k ; operacin XOR lgica, W = W k

3) XORLW

En estas tres instrucciones (Inclusive OR Literal W, AND Literal W y XOR Literal W) el nico bit afectado de la palabra de estado del procesador es el Z, que se pone en 1 si el resultado de la operacin es 00000000, y se pone en 0 si el resultado tiene cualquier otro valor. La instruccin que sigue sirve para cargar una constante de programa en el registro W :

4) MOVLW

; carga constante en W,

W = K no afecta ninguno de los bits de estado del procesador.

Ej. MOVLW

0x05

; Guarda el valor 05 en el registro W

Un caso especial es la instruccin CLRW (Clear W) que pone el registro W con Cero lgico. el nico bit de estado afectado es el Z que resulta 1.

5) CLRW

; borra el contenido de W, W = 0 1

Profesor: Ingeniero electrnico Sr. Boris Liberona C.

Fundacin Duoc UC Sede Antonio Varas

En segundo lugar se agrupan las instrucciones que operan con bytes y que involucran algn registro de la memoria interna. Estas instrucciones pueden ser de simple o doble operando de origen. El primer operando de origen ser siempre el registro seleccionado en la instruccin, el segundo, en caso de existir, ser el registro W. El destino, es decir donde se guardara el resultado, ser el registro seleccionado o el W, segn se seleccione con un bit de la instruccin. El formato genrico de estas instrucciones es el siguiente:

Los bits 0 a 7 (8 bits), denominados f permiten seleccionar uno de 128 registros de la memoria interna. El bit 8, denominado D , permite especificar el destino del resultado. Si D = 1 el resultado se guardara en el registro seleccionado. Si D = 0 el resultado se guardara en W. Los bits 9 a 13 identifican la instruccin especfica a realizar.

Las instrucciones siguientes son las tres operaciones lgicas de doble operando cuya sintaxis de este tipo de instruccin son: Instruccin + Operando 1 + operando2 As se tienen las siguientes instrucciones: ;Operacin AND lgica, destino = W f Direccin, Valor del Destino

1) ANDWF EJ: ANDWF

f,d

0x11, 0 ; Efecta la operacin AND entre el contenido del registro W y el contenido de la direccin de memoria 11. El resultado se guarda en el registro W. 0x17, 1 ; Efecta la operacin AND entre el contenido del registro W y el contenido de la direccin de memoria 17. El resultado se guarda en la direccin de memoria 07. ;Operacin OR lgica, destino = W f

ANDWF

2) IORWF EJ: IORWF

f,d

0x0D, 0 ; Efecta la operacin OR entre el contenido del registro W y el contenido de la direccin de memoria 0D. El resultado se guarda en el registro W. 0x17, 1 ; Efectua la operacin OR entre el contenido del registro W y el contenido de la direccin de memoria 17. El resultado se guarda en la direccin de memoria 17. ;Operacin XOR lgica, destino = W f XOR W con F.

IORWF

3) XORWF

f,d

Nota: Los nombres mnemnicos de estas instrucciones provienen de : AND W con F, Inclusive OR W con F y

Un caso especial es la instruccin Mov que tiene dos acepciones que son: 4) MOVWF Ej: MOVWF f 0x13 ;copia contenido W f, f = W ;mueve o copia el contenido del registro W en la direccin de memoria 13 2

Profesor: Ingeniero electrnico Sr. Boris Liberona C.

Fundacin Duoc UC Sede Antonio Varas

5) MOVF Ej.: MOVF MOVF

f,d

;movimiento de datos,

destino = f o bien destino = W dependiendo del valor de d

0x15,0 ;mueve o copia el contenido de la direccin de memoria 15 al registro W. 0x15,1 ;mueve o copia el contenido de la direccin de memoria 15 a la direccin de memoria 03 (no hace nada, pero coloca en 1 lgico el Flag Z).

Las que siguen son operaciones aritmticas y lgicas sencillas de simple operando: 6) COMF Ej: COMF f,d ;complemento lgico, destino = NOT f

0x13,0 ;Complementa o invierte el contenido de la direccin de memoria 13 y lo almacena en el registro W. 0x13,1 ;Complementa o invierte el contenido de la direccin de memoria 13 y lo almacena En la direccin de memoria 13

COMF

7) INCF Ej: INCF

f,d 0x13,0

;Incremento aritmtico, destino = f + 1 ;S la direccin de memoria 13, tiene el valor 08, despus de ejecutarse la instruccin la memoria 13 seguir teniendo el valor 08, pero el registro W tendr el valor 09 ;S la direccin de memoria 13, tiene el valor 08, despus de ejecutarse la instruccin la memoria 13 tendr el valor 09

INCF

0x13,1

8) DECF

f,d

;decremento aritmtico, destino = f - 1

Las instrucciones que siguen son de simple operando, pero son casos especiales ya que el destino es siempre el registro seleccionado:

9) CLRF

;borrado de contenido,

f=0

La instruccin CLRF (CLeaR File) afecta solo al bit Z que resulta siempre 0. La instruccin MOVWF (MOVe W a F) no afecta ningn bit de la palabra de estado. Los mnemnicos de estas instrucciones provienen de: MOVe File, COMplement File, INCrement File y DECrement File. En las instrucciones anteriores el nico bit afectado de la palabra de estado del procesador es el Z, que se pone en 1 si el resultado de la operacin es 00000000, y se pone en 0 si el resultado tiene cualquier otro valor.

A continuacin siguen las dos instrucciones de rotacin de bits a travs del CARRY: 10) RLF f,d ;rotacin a la izquierda, destino = f ROT

11) RRF f,d ;rotacin a la derecha, destino = f ROT Profesor: Ingeniero electrnico Sr. Boris Liberona C. 3

Fundacin Duoc UC Sede Antonio Varas

En estas operaciones (Rotate Left File y Rotate Right File) los bits son desplazados de cada posicin a la siguiente, en sentido derecho o izquierdo. El desplazamiento es cerrado, formando un anillo, con el bit C (CARRY) de la palabra de estado. En estas dos instrucciones, el nico bit afectado de la palabra de estado del procesador es el bit C, que tomar el valor que tenia el bit 7 o el bit 0, segn sea el sentido del desplazamiento. Estas instrucciones son muy tiles para la manipulacin de bits, y adems para realizar operaciones aritmticas, ya que en numeracin binaria, desplazar un nmero a la izquierda es equivalente a multiplicarlo por 2, y hacia la derecha, a dividirlo por 2.

La instruccin siguiente realiza el intercambio de posiciones entre los cuatro bits menos significativos y los cuatro ms significativos (nibble bajo y nibble alto).

12) SWAPF Ej: SWAPF

f,d 0x13,0

;intercambia nibbles, destino = SWAP f ;S la direccin de memoria 13, tiene el valor 08, despus de ejecutarse la instruccin, la memoria 13 seguir teniendo el valor 08, pero el registro W tendr el valor 80. ;S la direccin de memoria 13, tiene el valor 08, despus de ejecutarse la instruccin, la memoria 13 tendr el valor 80.

SWAPF

0x13,1

Esta instruccin (SWAP File) no afecta ninguno de los bits de la palabra de estado del procesador. Esta instruccin es muy til para la manipulacin de nmeros BCD empaquetados, en los que en un solo byte se guardan dos dgitos BCD (uno en cada nibble). Las dos operaciones que siguen son la suma y la resta aritmticas : 13) ADDWF f,d ;suma aritmtica, destino = f + W

Esta operacin (ADD W a F ) afectan a los tres bits de estado C, DC y Z. El bit Z se pone en 1 si el resultado de la operacin es 00000000, y se pone en 0 si el resultado tiene cualquier otro valor. La suma se realiza en aritmtica binaria pura sin signo. Si hay un acarreo del bit 7, es decir que el resultado es mayor que 255, el bit C (carry) resulta 1, en caso contrario resulta 0. Si hay un acarreo del bit 3, es decir que la suma de las dos mitades (nibbles) menos significativas (bits 0 a 3) resulta mayor que 15, se pone en 1 el bit DC (digit carry), en caso contrario se pone en 0. Ejemplos : A2 1010 0010 D0 1101 0000 + 4 F + 0100 1111 Z DC C + 6F + 0110 1111 Z DC C F1 1111 0001 0 1 0 3F 0011 1111 0 0 1 La resta se realiza sumando, en binario puro sin signo, el registro f ms el complemento a dos de W (el complemento a 1, o complemento lgico, ms 1)

14) SUBWF

f,d

;resta aritmtica, destino = f - W

Esta operacin (SUBstract W de F) afectan a los tres bits de estado C, DC y Z. Ejemplos : f W

0100 0100 - 0010 1000 C DC Z 0001 1100 1 0 0

0010 1000 - 0100 0100 C DC Z 1110 0100 0 1 0 0010 1000 + 1011 1100 C DC Z 1110 0100 0 1 0

equivalente a : f 0100 0100 cmp.2 W + 1101 1000 C DC Z 0001 1100 1 0 0

Los bits de estado C y DC toman el valor normal correspondiente a la suma de f con el complemento a 2 de W. De esta manera el significado para la operacin de resta resulta invertido, es decir que C (carry) es 1 si no hubo desborde en la resta, o dicho de otra 4 Profesor: Ingeniero electrnico Sr. Boris Liberona C.

Fundacin Duoc UC Sede Antonio Varas

manera, si el contenido de W es menor que el de f. El bit DC se comporta de manera similar, es decir que DC es 1 si no hubo desborde en la mitad menos significativa, lo que equivale a decir que el nibble bajo del contenido de W es menor que el del registro f. 15) SUBLW k ;resta aritmtica, W = k - W

Instrucciones de Bit El formato genrico de estas instrucciones es el siguiente:

Los bits 0 a 7 (8 bits), denominados f, permiten seleccionar uno de 128 registros de la memoria interna. Los bits 8 a 10, denominados b, permiten especificar el numero de bit (0 a 7) sobre el que se operara. Estas instrucciones operan solamente sobre el bit especificado, el resto de los bits del registro no son alterados. Estas instrucciones no tienen especificacin de destino, ya que el mismo es siempre el registro seleccionado.

1) BCF EJ: BCF

f,b

;borra el bit b de f

;bit f(b) = 0

0x12,3 ;S la direccin 12 tiene el valor lgico 0A (equivalente a 0000 1010), al ejecutarse le instruccin tendr el valor 02 (equivalente a 0000 0010) pues pone a cero el bit 3 de la direccin 12

2) BSF

f,b ;coloca en uno el bit b de f ;bit f(b) = 1

Estas instrucciones (Bit Clear File y Bit Set File) no afectan ningn bit de la palabra de estado del procesador.

Instrucciones de Control 1) Salto incondicional: Permite saltar a cualquier posicin de la memoria de programa (que en la mayora de los microprocesadores convencionales se llama JUMP). La constante literal k es la direccin de destino del salto, es decir la nueva direccin de memoria de programa a partir de la cual comenzarn a leerse las instrucciones despus de ejecutar la instruccin GOTO. Esta instruccin simplemente carga la constante k en el registro PC (contador de programa). La nica complicacin de esta instruccin es que la constante k es de solo 9 bits, mientras que el registro PC es de 11 bits, ya que en el 16C57 debe permitir direccionar una memoria de programa de 2 K. Los dos bits faltantes, bit 9 y 10 del PC, son tomados respectivamente de los bits de seleccin de pgina PA0 y PA1 de la palabra de estado. Este comportamiento particular hace que la memoria de programa aparezca como dividida en paginas como se vera ms adelante. El programador debe tener en cuenta que antes de ejecutar una instruccin GOTO es posible que haya que programar los bits PA0 y PA1. Existen programas ensambladores que permiten trabajar con directivas de ensamblados y con etiquetas como se muestra a continuacin.

GOTO k Etiqueta

;salto a la posicin k (9 bits) del programa Instruccin ORG ;Comentario ;El programa deber ser cargado a partir de la direccin 03 de la memoria de programa. 5

0x03

Profesor: Ingeniero electrnico Sr. Boris Liberona C.

Fundacin Duoc UC Sede Antonio Varas

movlw SALTO addlw goto end

0x03 0x02 SALTO

;Guarda el valor 03 en el registro W. ;Suma 2 al valor anterior del registro W. ;Vuelve a la instruccin anterior ;Fin del programa.

2) Salto condicional:

Permite saltar una posicin de la memoria de programa (equivalente a la memoria de programa) si se cumple la condicin.

2.1 2.2

BTFSC BTFSS

f,b ; (Bit Test File and Skip if Clear) salta la prxima instruccin si el bit b del registro f es cero. f,b ; (Bit Test File and Skip if Set) salta prxima instruccin si el bit b del registro f es 1.

Nota: Es importante indicar que el registro F puede ser perfectamente el registro Status, correspondiente a la direccin 03 de la memoria de programa, luego uno puede preguntar por cualquier bit o flag del registro de estado. 2.3 2.4 DECFSZ f,d ; (DECrement File and Skip if Zero), decrementa el registro f y salta una instruccin s el flag Z = 1. El resultado del decremento puede quedar en el registro W si d =0 o en el registro F si d =1. INCFSZ f,d ; (INCrement File and Skip if Zero), incrementa el registro f y salta una instruccin s el flag Z = 1. El resultado del incremento puede quedar en el registro W si d =0 o en el registro F si d =1.

Estas dos instrucciones (DECrement File and Skip if Zero, e INCrement File and Skip if Zero) se comportan de manera similar a DECF e INCF, salvo que no afectan a ningn bit de la palabra de estado. Una vez realizado el incremento o decremento, si el resultado del flag Z = 1 del registro de estado, el microprocesador saltara la prxima instruccin del programa. Estas instrucciones pueden usarse para realizar o no una accin segn sea el estado de un bit, o, en combinacin con GOTO, para realizar una bifurcacin condicional.

Profesor: Ingeniero electrnico Sr. Boris Liberona C.

Fundacin Duoc UC Sede Antonio Varas

Subrutinas Una subrutina transfiere el control desde el programa (llamado programa principal) a un procedimiento o programa secundario (llamado subrutina), para volver nuevamente al mismo lugar del programa principal una vez ejecutado el procedimiento. Para realizar una operacin completa de llamada a subrutina, el microcontrolador realiza los siguientes pasos: Al detectar la instruccin de llamado a subrutina (con la instruccin CALL direccin), el microprocesador guarda la direccin de la instruccin siguiente en el Stack b) El registro contador de programa PC y PCLATH se cargan con la direccin indicada en la instruccin CALL y transfiere el control a esa direccin. c) Ejecuta las instrucciones de la subrutina a partir de la direccin indicada por el registro PC en adelante. d) Al detectar la instruccin de retorno de subrutina (con la instruccin RETURN), el microcontrolador toma la direccin que se encuentra en el Stack y la guarda en el registro PC y PCLATH respectivamente. e) Ejecuta las instrucciones a partir de la direccin indicada por el registro PC y PCLATH que corresponde a las instrucciones del programa principal justamente despus de la instruccin CALL direccin. Es importante indicar que la instruccin END se debe colocar al final del programa, esto es, en la ltima direccin de memoria. Imaginemos que se tiene el siguiente programa en ASSEMBLER. PROGRAMA PRINCIPAL Etiqueta Instruccin org 0 inicio movlw 0x02 call sub1 call sub1 goto inicio a)

; Comentario Inicia el programa en la direccin cero Carga el registro W con el valor 02 Llama a la subrutina llamada sub1 Llama a la subrutina llamada sub1 Pasa el control a la primera instruccin del programa principal que se encuentra en la direccin inicio

SUBRUTINA Etiqueta sub1

Instruccin addlw 0x03 movwf 0x01 return End

; Comentario Suma 03 al valor del registro W Guarda el contenido del registro W en la direccin 01 de la memoria de datos Retorna al programa principal. Fin del programa

El programa finalmente quedara como: Direccin de memoria 0000 0001 0002 0003 Valor Etiqueta hexad. 3002 inicio 2004 2004 2800 Instruccin movlw 0x2 call sub1 call sub1 goto inicio

0004

3E03

sub1

addlw 0x3 7

Profesor: Ingeniero electrnico Sr. Boris Liberona C.

Fundacin Duoc UC Sede Antonio Varas

0005 0006 0007 0008

0081 0008 3FFF 3FFF

movwf 0x1 return addlw 0xff addlw 0xff

El proceso de ejecucin del programa es el siguiente: Paso Direccin Nemonico 1 0000 movlw 0x2 2 3 4 5 6 7 8 9 10 0001 0004 0005 0006 0002 0004 0005 0006 0003 call sub1 addlw 0x3 movwf 0x1 return call sub1 addlw 0x3 movwf 0x1 return goto inicio

Comentario Guarda el valor 02 en registro W Llama a la subrutina en la direccin 0004 Suma el valor 03 al registro W quedando finalmente con W = 05 Guarda el contenido del registro W en la direccin de memoria 01 vuelve al programa principal. Llama a la subrutina en la direccin 0004 Suma el valor 03 al registro W quedando finalmente con W = 08 Guarda el contenido del registro W en la direccin de memoria 01 vuelve al programa principal. Pasa el control a la primera instruccin del programa principal que se encuentra en la direccin inicio Guarda el valor 02 en registro W (Se repite nuevamente)

11

0000

movlw 0x2

Existe otra instruccin llamada RETLW k que tiene por objeto hacer un retorno de subrutina, pero adems carga el registro de trabajo W con el valor literal k respectivamente.

Profesor: Ingeniero electrnico Sr. Boris Liberona C.

Fundacin Duoc UC Sede Antonio Varas

Representacin grfica de los algoritmos Para representar un algoritmo se debe utilizar algn mtodo que permita independizar dicho algoritmo del lenguaje de programacin elegido, permitiendo que este algoritmo pueda ser codificado indistintamente en cualquier lenguaje. Para ello, se requiere que el algoritmo sea el resultado grfico o numrico, de manera que las sucesivas acciones no dependan de la sintaxis de ningn lenguaje de programacin, sino que la descripcin pueda servir fcilmente para su transformacin en un programa o codificacin. Diagrama de flujo: El diagrama de flujo es una tcnica de representacin de un algoritmo, que es muy til especialmente por su ordenacin y facilidad en el seguimiento de cada uno de los procesos que realiza. Para ello se cuenta con una serie de smbolos, cada uno de los cuales nos indica el proceso que se est realizando y que estn unidos mediante flechas. A continuacin se muestran algunos smbolos.

Smbolo

Funcin

Terminal: Representa el inicio y final de un programa, puede representar tambin una parada programada que sea necesario realizar en el programa.

Proceso: Cualquier tipo de operacin que pueda originar un cambio de valor, tamao o posicin de la informacin almacenada en memoria, operaciones aritmticas, lgicas, etc.

Entrada/Salida: Cualquier tipo de ingreso de datos hacia la memoria o registro del procesador desde algn perifrico (entrada de datos) o bien el proceso inverso, al entregar un dato hacia algn perifrico (salida de datos).

Decisin: Permite diferenciar dos caminos distintos de seguimiento, dependiendo de algn resultado lgico o aritmtico en el proceso inmediatamente anterior.

Conector: Sirve para enlazar dos partes cualquiera de un diagrama, a travs de un conector en al salida y otro a la entrada. Se refiere a una conexin lgica a una misma pgina del programa. (normalmente se utiliza en programas de longitud mayor al de la pgina donde se escribe el diagrama de flujo) Indicador de direccin o lnea de flujo: Indica el sentido de ejecucin de las operaciones, para dos procesos consecutivos.

Llamada a subrutina

Profesor: Ingeniero electrnico Sr. Boris Liberona C.

Fundacin Duoc UC Sede Antonio Varas

RESUMEN DE INSTRUCCIONES BASICAS POR ORDEN ALFABETICO

1)

Instrucciones que manejan Literales sobre el registro de trabajo W (direccionamiento inmediato). ADDLW ANDLW IORLW MOVLW SUBLW XORLW k k k k k k ; Suma W = W mas k ; operacin AND lgica, W = W k ; operacin OR lgica, W = W + k ; Copia un valor W = k ; Resta W = k menos W ; operacin lgica OR exclusivo, W=kW (Z DC C) (Z) (Z) (--) (Z DC C) (Z)

2)

Instrucciones que manejan Registros (direccionamiento directo). ADDWf ANDWF CLRF CLRW COMF DECF INCF IORWF MOVF MOVWF NOP RLF RRF SUBWF SUAPF XORWF f,d f,d f,d f,d f,d f,d f,d f,d f,d f,d f f,d f,d f ; Suma Destino = W mas f Si d =1 Destino f; Si d =0 Destino W ;Operacin AND lgica, destino = W f ; Borra el registro f f=0 (Z DC C) (Z) (Z) (Z) (Z) (Z) (Z) (Z) (Z) (Z)

; Borra el registro W W = 0

; Invierte el contenido del registro f Si d =1 Destino f; Si d =0 Destino W ; Decrementa el contenido del registro f ; Incrementa el contenido del registro f ;Operacin OR lgica, destino = W + f

; Mueve o copia el valor del registro f Si d =1 Destino f; Si d =0 Destino W ; Mueve o copia el valor del registro W al registro f ; No hace nada (sirve para perder tiempo) ; Rota a la Izquierda con bit de carry ; Rota a la derecha con bit de carry ; Resta W a f, esto es Destino = f menos W ; Intercambia los Nibbles del registro

(C) (C) (Z DC C)

Si d =1 Destino f; Si d =0 Destino W (Z)

;Operacin lgica OR exclusivo, destino = W f

3)

Instrucciones que manejan Bits BCF f,b ; Pone en cero el bit b del registro f 10

BSF f,b ; Pone en uno el bit b del registro f Profesor: Ingeniero electrnico Sr. Boris Liberona C.

Fundacin Duoc UC Sede Antonio Varas

4)

Instrucciones de salto. BTFSC BTFSS DECFSZ f,b f,b f,d ; Explora el bit b del registro f, salta un lugar si este bit vale 0 ; Explora el bit b del registro f, salta un lugar si este bit vale 1 ; Decrementa el registro f. Si d =1 Destino f; Si d =0 Destino W Adems salta un lugar si el resultado es 0 (por defecto d = 1) ; Incrementa el registro f. Si d =1 Destino f; Si d =0 Destino W Adems salta un lugar si el resultado es 0 (por defecto d = 1) ; Salto incondicional a la direccin k

INCFSZ

f,d

GOTO

5)

Instrucciones de control y especiales. CALL RETURN RETLW CLRWDT RETFIE SLEEP k k ; Llamada a subrutina. ; Retorno de subrutina ; Retorno de subrutina y guarda el literal k en el registro W ; Borra o refresca el perro guardin ; Retorno de interrupcin (GIE = 1) ; Pasa al modo de reposo (T0#, PD#) (T0#, PD#)

Profesor: Ingeniero electrnico Sr. Boris Liberona C.

11

Potrebbero piacerti anche