You are on page 1of 10

Nemnicos

ADDWF
ANDWF
CLRF
CLRW
COMF
DECF
DECFSZ
INCF
INCFSZ
IORWF
MOVF
MOVWF
NOP
RLF
RRF
SUBWF
SWAPF
XORWF

operandos
f,d
f,d
f
--f,d
f,d
f,d
f,d
f,d
f,d
f,d
f
--f,d
f,d
f,d
f,d
f,d

BCF
BSF
BTFSC
BTFSS

f,b
f,b
f,b
f,b

ANDLW
CALL
CLRWDT
GOTO
IORLW
MOVLW
OPTION
RETLW
SLEEP
TRIS
XORLW

k
k
k
k
k
k
k
k
--f
k

ADDWF

INSTRUCCIONES QUE MANEJAN REGISTROS


Descripcin
Ciclos
Flags
Suma W y f
1
C, DC, Z
AND W con f
1
Z
Borra f
1
Z
Borra W
1
Z
Complementa f
1
Z
Decrementa f
1
Z
Decrementa f, si es 0 salta
1 (2)
Ninguno
Incrementa f
1
Z
Incrementa f, si es 0 salta
1
Ninguno
OR entre W y f
1
Z
Mueve f
1
Z
Mueve W a f
1
Ninguno
No opera
1
Ninguno
Rota f a la izqda. a travs del carry
1
C
Rota f a la dcha. a travs del carry
1
C
Resta a f el reg. W
1
C, DC, Z
Intercambia f
1
Ninguno
XOR de W con f
1
Z
INSTRUCCIONES QUE MANIPULAN BITS
Borra bit de f
1
Ninguno
Pone a 1 el bit de f
1
Ninguno
Comprueba un bit de f y salta si es 0
1 (2)
Ninguno
Comprueba un bit de f y salta si es 1
1 (2)
Ninguno
INSTRUCCIONES DE CONTROL Y DE OPERANDOS INMEDIATOS
AND inmediato con W
1
Z
Llamada a subrutina
2
Ninguno
Borra Watchdog
1
TO, PD
Salto incondicional
2
Ninguno
OR inmediato con W
1
Z
Mueve a W un valor inmediato
1
Ninguno
Carga el registro OPTION
1
Ninguno
Retorno y carga de W
2
Ninguno
Pasa a estado de reposo
1
TO, PD
Carga el registro
1
Ninguno
OR exclusiva a W
1
Z

Suma W y f
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Descripcin:
Ejemplo:
ANDWF
W AND f
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Descripcin:
Ejemplo:
ANDLW
W AND literal
Sintaxis:
Operandos:
Operacin:
Flags afectados:

[label] ADDWF f,d


d=0 d=1; 0 <= f <= 31
(W) + (f) --> (dest)
C, DC, Z
Suma el contenido del registro W y el registro "f". Si "d" es 0, el resultado se almacena en el registro W. Si "d" es 1 el resutado se
almacena en el registro "f".
ADDWF REG,0 Antes de la instruccin: Despus de la instruccin:
W= 0x17 REF= 0xC2 W= 0xD9 REG=0xC2

[label] ANDWF f,d


d=0 d=1; 0 <= f <= 31
(W) AND (f) --> (dest)
Z
Realiza la operacin lgica AND entre el registro W y el registro "f". Si "d" es 0 el resultado
se almacena en el registro W. Si "d" es 1, el resultado se almacena en el registro "f".
ANDWF REG,1 Antes de la instruccin: Despus de la instruccin:
W=0x17 REG= 0xC2 W=0x17 REG= 0x02

Ejemplo:

[label] ANDWL k
0 <= k <= 255
(W) AND (k) --> (W)
Z
Realiza la operacin lgica AND entre el registro W y la constante "k". El resultado se
almacena en el registro W.
ANDLW 0x5FAntes de la instruccin: Despus de la instruccin:

W= 0xA3 W= 0x03

BCF
Borra un bit
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Descripcin:
Ejemplo:

[label] BCF f,b


0 <= f <= 31; 0 <= b <= 7;
0 --> (f < b >)
Ninguno
Borra el bit "b" del registro "f".
BCF REG,7Antes de la instruccin: Despus de la instruccin:

REG = 0x0A REG = 0x47

BSF
Activa un bit
Sintaxis:

[label] BSF f,b

Descripcin:

Operandos:
Operacin:
Flags afectados:
Descripcin:
Ejemplo:

0 <= f <= 31; 0 <= b <= 7;


1 --> (f < b >)
Ninguno
Activa el bit "b" del registro "f".
BSF REG,0x0AAntes de la instruccin: Despus de la instruccin:

BTFSC
Test de bit y salto
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Descripcin:

[label] BTFSC f,b


0 <= f <= 31; 0 <= b <= 7;
Salto si (f < b >) = 0
Ninguno
Si el bit "b" del registro "f" es 0, se salta una instruccin y se contina con la ejecucin.

Ejemplo:

BTFSS
Test de bit y salto
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Descripcin:
Ejemplo:

CALL
Salto a subrutina
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Descripcin:
Ejemplo:
CLRF
Borra un registro

COM BTFSC REG,1FALSE GOTO PROCESA_X TRUE Antes de la instruccin: Despus


de la instruccin:

REG = 0x0A REG = 0x8A

PC= Direccin (COM_) SI REG <1> = 0


PC= Direccin (TRUE)SI REG <1> = 1 PC=
Direccin (FALSE)

[label] BTFSS f,b


0 <= f <= 31; 0 <= b <= 7;
Salto si (f < b >) = 1
Ninguno
Si el bit "b" del registro "f" es 1, se salta una instruccin y se contina con la ejecucin.
COM BTFSS REG,6FALSE GOTO PROCESA_X TRUE Antes de la instruccin: Despus
de la instruccin:

PC= Direccin (COM_) SI REG <6> = 0


PC= Direccin (FALSE)SI REG <6> = 1
PC= Direccin (TRUE)

[label] CALL k
0 <= k <= 255
(PC) + 1 --> stack; k --> PC
Ninguno
Salto a subrutina. La direccin de retorno se guarda en el stack. La constante "k" de 8 bits
forma la direccin de salto y se carga en los bits <7:0> del PC.Los bits <10:9> del PC se
cargan con los bits <6:5> del registro "STATUS". PC <8> se pone a 0.
ORG CALL DESTINOAntes de la instruccin: Despus de la instruccin:
PC = ORG PC = DESTINO

Sintaxis:
Operandos:
Operacin:
Flags afectados:
Descripcin:
Ejemplo:

[label] CLRF f
0 <= f <= 32
00f --> (f); 1 --> Z
Z
Se borra el contenido del registro "f" y el flag Z de estado se activa.
CLRF REGAntes de la instruccin: Despus de la instruccin:

REG = 0x5A REG = 0x00 Z = 1

CLRW
Borra el registro
W
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Descripcin:
Ejemplo:

[label] CLRW
Ninguno
00h --> W; 1 --> Z
Z
El registro de trabajo "W" se carga con 00h. El flag de Z se activa.
CLRWAntes de la instruccin: Despus de la instruccin:

W = 0x5A W = 0x00 Z = 1

CLRWDT
Borra el
"watchdog"
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Descripcin:
Ejemplo:
COMF
Complementa f
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Descripcin:
Ejemplo:
DECF
Decremento de f

[label] CLRWDT
Ninguno
00h --> WDT; 1 --> TO; 1 --> PD;
TO, PD
Esta instruccin borra tanto el "watchdog" como el prescaler. Los bits TO y PD del registro
de estado se ponen a "1".
CLRWDT Despus de la instruccin:

label COMF f,d


0 <= f <= 31; d = 0 d = 1
(f) --> (dest)
Z
El contenido del registro "f" se complementa. Si "d" es 0 el resultado "R" se almacena en el
registro W. Si "d" es 1, el resultado "R" se almacena en el registro "f".

Contador WDT = 0Prescaler WDT = 0 Bit


de estado TO = 1 Bit de estado PD = 1

Sintaxis:
Operandos:
Operacin:
Flags afectados:
Descripcin:
Ejemplo:
DECFSZ
Decremento y
salto
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Descripcin:
Ejemplo:

GOTO
Salto
incondicional
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Descripcin:
Ejemplo:
INCF
Incremento de f
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Descripcin:

[label] DECF f,d


0 <= f <= 31; d = 0 d = 1
(f) - 1 --> (dest)
Z
Se decrementa en una unidad el contenido del registro "f". Si "d" es 0, el resultado se
almacena en W. Si "d" es 1, el resultado se almacena en "f".
DEC CONT, 1 Antes de la instruccin: Despus de la instruccin:

CONT = 0x01 Z = 0 CONT = 0x00 Z = 1

[label] DECFSZ f,d


0 <= f <= 32; d = 0 d = 1
(f) - 1 --> d; Salto si R = 0
Ninguno
El contenido del registro "f" se decrementa. Si "d" es 0, el resultado "R" se coloca en el
registro W. Si "d" es 1, el resultado "R" se coloca en el registro "f". Si R = 0, se salta la
siguiente instruccin y se contina con la ejecucin.
COM_ DECFSZ REG,O GOTO_NO_ES_0Antes de la instruccin: Despus de la
instruccin:

PC = Direccin (COM_) REG = REG - 1SI


REG = 0 PC = Direccin CONTINUASI
REG != 0 PC = Direccin (COM_ + 1)

[label] GOTO k
0 <= k <= 511
k --> PC --> <8:0>
Ninguno
Se trata de un salto incondicional. Los 9 bits de la constante "k" que forman la instruccin,
se cargan en los bits <8:0> del PC y forman la direccin de salto. Los bits <10:9> del PC se
cargan con los bits <6:5> del registro de estado.
ORG GOTO DESTINOAntes de la instruccin: Despus de la instruccin:
PC = 0 PC = DESTINO

[label] INCF f,d


0 <= k <= 31; d = 0 d = 1
(f) + 1 --> (dest)
Z
Incrementa en una unidad el contenido del registro "f". Si "d" es 0, el resultado se
almacena en W. Si "d" es 1, el resultado se almacena en "f".

Ejemplo:
INCFSZ
Incremento de f,
si es 0 salta
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Descripcin:
Ejemplo:

IORLW
W OR literal
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Descripcin:
Ejemplo:
IORWF
OR entre W y f
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Descripcin:

INCF CONT,1 Antes de la instruccin: Despus de la instruccin:

CONT = 0xFF Z = 0 CONT = 0x00 Z = 1

[label] INCFSZ f,d


0 <= f <= 31; d = 0 d = 1
(f) + 1 --> (dest); Salto si R = 0
Ninguno
Incrementa en una unidad el contenido del registro "f". Si "d" es 0, el resultado se
almacena en W. Si "d" es 1, el resultado se almacena en "f". Si R=0, se salta la siguiente
instruccin y se contina con la ejecucin.
PC = Direccin (COM_) CONT + 1SI CNT =
COM_ INCFSZ REG,1 GOTO_NO_ES_0 CONTINUAAntes de la instruccin: Despus de
0 PC = Direccin CONTINUASI REG != 0
la instruccin:
PC = Direccin (COM_ + 1)

[label] IORLW k
0 <= f <= 255
(W).OR.(k) --> (W)
Z
Se realiza la funcin lgica OR entre el registro W y la contante "k". El resultado se
almacena en el registro W.
IORLW Ox35Antes de la instruccin: Despus de la instruccin:

W = 0x9A W = 0xBF

[label] IORWF f,d


0 <= f <= 31; d = 0 d = 1
(W).OR.(f) --> (dest)
Z
Realiza la operacin lgica OR entre el registro W y el registro "f". Si "d" es 0 el resultado
se almacena en el registro W. Si "d" es 1, el resultado se almacen en el registro "f".

Ejemplo:

IORWF REG,0 Antes de la instruccin: Despus de la instruccin:

MOVF
Mover a f
Sintaxis:
Operandos:
Operacin:

[label] MOVF f,d


0 <= f <= 31; d = 0 d = 1
(f) --> (dest)

RESULTADO = 0x13 W = 0x91


RESULTADO = 0x13W = 0x93 Z = 0

Flags afectados:
Descripcin:
Ejemplo:

Z
El contenido del registro "f" se mueve al destino "d". Si "d" es 0, el destino es el registro w.
Si "d" es 1, el destino es el propio registro "f". Esta posibilidad permite verificar dicho
registro ya que el flag Z queda afectado.
MOVF REG,0 Despus de la instruccin:
W = REG

MOVLW
Carga un literal en
W
Sintaxis:
label MOVLW k
Operandos:
0 <= f <= 255
Operacin:
(k) --> (W)
Flags afectados: Ninguno
Descripcin:
El registro W se carga con el valor de 8 bits expresado mediante la literal "k".
Ejemplo:
MOVLW 0x5A Despus de la instruccin:
MOVWF
Mover W a f
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Descripcin:

label MOVWF f
0 <= f <= 31
(W) --> (dest)
Ninguno
Mueve el contenido del registro W al registro "f".

Ejemplo:

MOVWF REG Antes de la instruccin: Despus de la instruccin:

NOP
No operar
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Descripcin:
Ejemplo:

[label] NOP
Ninguno
No operar
Ninguno
No realiza operacin alguna. Consume un ciclo de instruccin.
NOP

OPTION
Carga reg.
OPTION
Sintaxis:
Operandos:
Operacin:

[label] OPTION
Ninguno
(W) --> OPTION

W = 0x5A

REG = 0xFF W = 0x4F REG = 0x4F W =


0x4F

Flags afectados:
Descripcin:
Ejemplo:
RETWL
Retorno, carga W
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Descripcin:

Ninguno
El contenido del registro W se carga en el registro OPTION. Este es un registro de slo
escritura donde se configura el funcionamiento del prescaler y el TMR0.
OPTIONAntes de la instruccin: Despus de la instruccin:

[label] RETWL k
0 <= f <= 255
(k) --> (W); TOS --> PC
Ninguno
El registro W se carga con los 8 bits de la constante k. El PC se carga con el contenido de la
cima stack (TOS): direccin de retorno. Esta instruccin consume dos ciclos.

Ejemplo: TABLA
RLF
Rota f a la
izquierda
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Descripcin:
Ejemplo:

W = 0x07 OPTION = 0x07

W = 07 W = Valor de K8

[label] RLF f,d


0 <= f <= 31; d = 0 d = 1
Rotacin a la izquierda de f
C
El contenido del registro "f" se rota una posicin a la izquierda. El bit de ms peso pasa al
carry y el carry se introduce por el bit de menos peso de "f". Si "d" es 0, el resultado se
coloca en el registro W. Si "d" es 1, el resultado queda en el registro "f".
RLF REG1,0 Antes de la instruccin: Despus de la instruccin:

REG1 = 11100110 C = 0 REG1 = 11100110W


= 11001100 C = 1

RRF
Rota f a la derecha
Sintaxis:
[label] RRF f,d
Operandos:
0 <= f <= 31; d = 0 d = 1
Operacin:
Rotacin a la derecha
Flags afectados: C
El contenido del registro "f" se rota a la derecha. El bit de menos peso de "f" pasa al flag
Descripcin:
carry. El carry se coloca en el bit de ms peso de "f". Si "d" es 0, el resultado se almacena en
el registro W. Si "d" es 1, el resultado se almacena en "f".
Ejemplo:
SLEEP
Pasa a estado de

RRF REG1 Antes de la instruccin: Despus de la instruccin:

REG1 = 11100110 C = 0 REG1 = 11100110W


= 01110011 C = 0

reposo
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Descripcin:
Ejemplo:
SUBWF
Resta f - W
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Descripcin:
Ejemplo:
SWAPF
Intercambio de f
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Descripcin:
Ejemplo:
TRIS
Carga registro
TRIS
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Descripcin:

[label] SLEEP
Ninguno
ooh --> WDT; 0 --> WDT prescaler; 1 --> TO; 0 --> PD
TO, PD, GPWUF
Al salir, activa el bit de estado TO y borra el PD.El WDT y el prescaler se borran.Al entrar
en el modo SLEEP, se detiene el oscilador.
SLEEP

[label] SUBWF f,d


0 <= f <= 32; d = 0 d = 1
(f) - (W) --> (dest)
C, DC, Z
Resta, por el mtodo del complemento a 2, el contenido del registro "f" menos el contenido
del registro W. Si "d" es 0, el resultado se almacena en el registro W. Si "d" es 1, el
resultado se almacena en el registro "f". Si el resultado es negativo, el carry se pone a 0.
SUBWF REG,1 Antes de la instruccin: Despus de la instruccin:
REG = 1 W = 2 REG = 0xFF W = 0xFF

[label] SWAPF f,d


0 <= f <= 31; d = 0 d = 1
(f<3:0>) --> (dest.<7:4>) (f<7:4>) --> (dest.<3:0>)
Ninguno
Los cuatro bits de ms peso del registro "f" se intercambian con los cuatro bits de menos
peso del mismo registro. Si "d" es 0, el resultado se coloca en el registro W. Si "d" es 1, el
resultado queda en el registro "f".
SWAPF REG,0Antes de la instruccin: Despus de la instruccin:

[label] TRIS f
5 <= f <= 7
(W) --> Registro TRIS "f"
Ninguno
El contenido del registro W se carga en uno de los tres registros TRIS (TRISA, TRISB,
TRISC) segn "f" valga 5, 6 7 respectivamente. Los registros TRIS se emplean para
configurar cada una de las puertas A, B C para que acten sus lneas como entrada o
salida.

REG = 0x5A REG = 0x5A W = 0xA5

Ejemplo:
XORLW
W XOR literal
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Descripcin:
Ejemplo:
XORWF
W XOR f
Sintaxis:
Operandos:
Operacin:
Flags afectados:
Descripcin:
Ejemplo:

TRIS PORTAAntes de la instruccin: Despus de la instruccin:

W = 0xA5 TRISA = 0xA5

[label] XORLW k
0 <= k <= 255
(W).XOR.K --> (W)
Z
Realiza la funcin lgica OR exclusiva (EOR) entre el contenido del registro W y la
constante "k" de 8 bits. El resultado se almacena en el registro W.
XORLW 0xAFAntes de la instruccin: Despus de la instruccin:

W = 0xB5 W = 0x1A

[label] XORWF f,d


0 <= f <= 31; d = 0 d = 1
(W).XOR.(f) --> (dest.)
Z
Realiza la funcin lgica OR exclusiva (EOR) entre el contenido del registro W y el registro
"f". Si "d" es 0, el resultado se almacena en el registro W. Si "d" es 1 el resultado se
almacena en el registro "f".
XORWF REG,1 Antes de la instruccin: Despus de la instruccin:

REG = 0xAF W = 0xB5 REG = 0x1A W =


0xB5

You might also like