Вы находитесь на странице: 1из 6

INSTRUCCIONES

El set de instrucciones de los pic18cxxx agrega muchas mejoras, a los anteriores sets de
instrucciones.
Cada instruccin est dividida en un OPCODE que especifica el tipo de instruccin y
uno o ms operados los cuales facilitan especificar la operacin de la instruccin.
El set de instrucciones es altamente ortogonal y es agrupado dentro de 4 categoras
bsicas:
- Operaciones orientadas a Byte
- Operaciones orientadas a BIT
- Operaciones con un operando literal
- Operaciones de control
OPERACIONES ORIENTADAS AL BYTES:
RECORDAR SIEMPRE QUE LAS INSTRUCCIONES ORIENTAS AL BYTES
LLEVAN DESPUES DEL MNEMONICO ALGUNOS PARAMETROS

REG (F): direccin de un registro de 8 bits.


d: destino dependiendo si vale 1 el resultado se guarda en el registro si es 0 se guarda en
acumulador.
a: es un bit de acceso a RAM, si a = 1 el banco de registro ser especificado por el BSR
(registro de seleccin de banco), si a = 0 posicin de RAM en acceso de RAM.
ADDWFC
REG (F)
, d , a = suma el registro, el acumulador y el carry,
consume 1 ciclo
CPFSEQ
REG, a = compara el acumulador con el registro y salta si F = W,
consume 1, 2 o hasta 3 ciclos dependiendo.
CPFSGT
REG , a = compara el acumulador con el registro y salta si F > W,
consume 1, 2 o hasta 3 ciclos dependiendo
CPFSLT
REG , a = compara el acumulador con el registro y salta si F < W
,consume 1, 2 o hasta 3 ciclos dependiendo
DCFSNZ REG , d , a = es la inversa del DECFSZ, esta nueva instruccin lo que
haces es decrementar al registro y salta si el registro no es igual a 0, consume 1, 2 o
hasta 3 ciclos dependiendo
INCFNZ
REG , d , a = es la inversa del INCFSZ, esta nueva instruccin lo que haces
es incrementar al registro y salta si el registro no es igual a 0, consume 1, 2 o hasta 3
ciclos dependiendo
MOVFF Fs , Fd = mover el contenido de Fs (registro fuente de 12 bit) a Fd
(registro destino de 12 bit), 1 ciclo.
MULWF REG , a = multiplicar el acumulador con el registro, consume 1 ciclo.
El resultado de 16 bits se almacena en el PRODH ( byte alto del resultado de la
multiplicacin) o el en PRODL (byte bajo del resultado de la multiplicacin).
NEGF
REG, a = niega a los bits los 1 pasan a 0, y los 0 a 1, consumen 1 ciclo.
RLCF
REG , d ,a = rota hacia la izquierda, el carry reemplaza al bit 7, es el carry
quien rota a la izquierda, consume 1 ciclo
RLNCF
REG, d, a = rota hacia la izquierda parecido al RLCF, pero ac no rota el
carry lo que rota es el
bit 7.,consume 1 ciclo
RRCF
REG , d ,a = rota hacia la derecha, el carry reemplaza al bit 7, es el carry
quien rota a la izquierda, consume 1 ciclo
RRSNCF
REG, d, a = rota hacia la derecha parecido al RLCF, pero ac no rota el
carry lo que rota es el
bit 7, consume 1 ciclo
SETF
REG, a =
SUBWFB
REG, d, a = resta acumulador de registro con carry (F W C),
consume 1 ciclo
SUBFWB
REG, d, a = resta registro de acumulador con carry (W F C), consume
1 ciclo

Todas las instrucciones orientadas a BIT tienen tres operandos:


1. El registro (Especificado por el valor de 'f').
2. El BIT del registro (especificado por el valor de 'b').
3 El acceso a memoria (especificado por el valor de 'a').
b' designa el rea del BIT seleccionando el nmero del BIT afectado por la operacin,
mientras ' f ' representa la posicin del archivo en el cual el BIT est ubicado. El

sealizador de acceso 'a' especifica si el registro BSR selecciona el banco o si el acceso


a banco es usado.

Las instrucciones con literales pueden utilizar algunos de los siguientes


operndoos:
- Un literal puede ser cargado en un registro (especificado por el valor de 'k').
- El registro FSR carga el literal dentro (especificado por el valor de 'f').
- No requiere operando (especificado por el valor de '-').

Las instrucciones de control pueden usar algunos de los siguientes operandos:


- Una direccin de la memoria de programa (especificado por el valor de 'n').
- El modo de operacin de las instrucciones CALL o RETURN (especificado por el
valor de 's').
- El modo de operacin de las instrucciones Read y Write Table (especificado por el
valor de 'm').
- No requiere operados (especificado por el valor de '-')

Todas las instrucciones son de una simple palabras excepto por tres instrucciones de
doble palabra.
Estas tres instrucciones son echas de doble palabra de instruccin as que toda la
informacin requerida es vlida en 32 Bits. En esta segunda palabra, los 4 bits ms
significativos son '1'. Si esta segunda instruccin es ejecutada como una instruccin,
esta ser ejecutada como un NOP.
Todas las instrucciones simples son ejecutadas en un simple ciclo de instruccin, a
menos que un test condicional sea verdadero el contador de programa sea cambiado
como resultado de la instruccin. En este caso, la ejecucin toma dos ciclos de
instruccin con un ciclo de instruccin NOP adicional ejecutado.
La doble palabra de instruccin (que no modifica el PC) ejecutada en un doble ciclo de
instruccin.
Un ciclo de instruccin consiste de cuatro periodos de oscilador. As, para una
frecuencia de oscilador de 4 MHZ, el tiempo normal de ejecucin de una instruccin es
de 1s. Si un test condicional es verdadero o el contador de programa es cambiado como
resultado de una instruccin, el tiempo de ejecucin de es de 2s.. Dos palabras de
instruccin (si es verdadero) tomaran 3s.
Mapa de memoria de datos
El mapa de memoria de datos consiste en 16 bancos de 256 bytes cada uno. El set de
instrucciones y la arquitectura permite operaciones con todos los bancos de memoria
(tal como MOVFF). Un Segmento de banco 0 y un segmento de banco 15 abarca el
acceso a bancos.
Acceso a bancos
El acceso a bancos es una arquitectura mejorada que es muy til para la optimizacin
con compiladores de lenguaje C. Las tcnicas usadas por el compilador C pueden
tambin ser tiles con programas hechos en assembler
Esta regin de memoria de datos puede ser usada para
- Calculo de valores intermedios
- Variables locales de subrutinas.
- Variables comunes
- Rpida Evaluacin/control de SFR (sin bancos)
El acceso a bancos es comprendido de 2 segmentos: Segmento 0 y segmento 1. El
segmento 0 es la RAM esta mapeada en el banco 0. El segmento 1 son los SFR que
estan mapeados en el banco 15.
Cada segmento puede ser de diferente tamao. La suma de RAM del segmento 0 y el
segmento 1 es 256 bytes. Cuando se forza en el acceso a bancos (a = '0') la ltima
direccion en el segmento 0 es seguida por la primer direccion en el segmento 1. El
segmento 1 contiene los registros de funcin especial a fin de que estos registros
puedan ser accedidos por cualquier software cargado. Esto es til en banderas de estado

y modificacion de bits de control.