CLRF
Borra un registro
CLRW Borra el registro W
CLRWDT
Sintaxis: [label] CLRF f
Operandos: 0 ≤ f ≤ 127
Operación: : 0x00 ⇒ (f), 1 ⇒ Z
Flags afectados: Z
Código OP: 00 0001 1fff ffff
Sintaxis: [label] CLRW
Operandos: Ninguno
Operación: : 0x00 ⇒ W, 1 ⇒ Z
Flags afectados: Z
Código OP: 00 0001 0xxx xxxx
Descripción: El registro f se carga
con 0x00. El flag Z se activa.
Descripción: El registro de trabajo
W se carga con 0x00. El flag Z se
activa.
Ejemplo: :
Ejemplo: :
Sintaxis:
[label] CLRWDT
Operandos: Ninguno
Operación: 0x00 ⇒ WDT, 1 ⇒ /TO
1 ⇒ /PD
Flags afectados: /TO, /PD
Código OP: 00 0000 0110 0100
Descripción: Esta instrucción borra
tanto el WDT como su preescaler.
Los bits /TO y /PD del registro de
estado se ponen a 1.
Ejemplo: :
CLRWDT
Después: Contador WDT = 0,
Preescales WDT = 0,
/TO = 1, /PD = 1
CLRF REG
Antes: REG = 0x5A
Después: REG = 0x00, Z = 1
CLRW
Antes: W = 0x5A
Después: W = 0x00, Z = 1
DECFSZ Decremento y salto
COMF Complemento de f
DECF
Sintaxis: [label] COMF f,d
Operandos: d ∈ [0,1], 0 ≤ f ≤ 127
Operación: : (/ f), 1 ⇒ (dest)
Flags afectados: Z
Código OP: 00 1001 dfff ffff
Sintaxis: [label] DECF f,d
Operandos: d ∈ [0,1], 0 ≤ f ≤ 127
Operación: : (f ) – 1 ⇒ (dest)
Flags afectados: Z
Código OP: 00 0011 dfff ffff
[label] DECFSZ f,d
Sintaxis:
Operandos: d ∈ [0,1], 0 ≤ f ≤ 127
Operación: (f) -1 ⇒ d; Salto si R=0
Flags afectados: Ninguno
00 1011 dfff ffff
Código OP:
Descripción: El registro f es
complementado. El flag Z se activa si
el resultado es 0. Si d es 0, el
resultado se almacena en W, si d es 1
se almacena en f..
Ejemplo: :
COMF REG,0
Descripción: Decrementa en 1 el
contenido de f. Si d es 0, el resultado
se almacena en W, si d es 1 se
almacena en f.
Descripción:
Decrementa
el
contenido del registro f. Si d es 0, el
resultado se almacena en W, si d es 1
se almacena en f. Si la resta es 0 salta
la siguiente instrucción, en cuyo caso
costaría 2 ciclos.
Ejemplo:
DECFSC REG,0
GOTO NO_ES_0
SI_ES_0 Instrucción
NO_ES_0 Salta instrucción anterior
Antes: REG = 0x13
Después: REG = 0x13, W = 0XEC
Decremento de f
Borra el WDT
Ejemplo: :
DECF CONT,1
Antes: CONT = 0x01, Z = 0
Después: CONT = 0x00, Z = 1
GOTO Salto incondicional
INCF
Sintaxis:
[label] GOTO k
Operandos: 0 ≤ k ≤ 2047
Operación: k ⇒ PC <8:0>
Flags afectados: Ninguno
Código OP:
10 1kkk kkkk kkkk
Sintaxis: [label] INCF f,d
Operandos: d ∈ [0,1], 0 ≤ f ≤ 127
Operación: : (f ) + 1 ⇒ (dest)
Flags afectados: Z
Código OP: 00 1010 dfff ffff
Sintaxis:
[label] INCFSZ f,d
Operandos: d ∈ [0,1], 0 ≤ f ≤ 127
Operación: (f) -1 ⇒ d; Salto si R=0
Flags afectados: Ninguno
Código OP:
00 1111 dfff ffff
Descripción: Se trata de un salto
incondicional. La parte baja de k se
carga en PCL, y la alta en
PCLATCH. Ocupa 2 ciclos de reloj.
Ejemplo: ORIGEN GOTO DESTINO
Descripción: Incrementa en 1 el
contenido de f. Si d es 0, el resultado
se almacena en W, si d es 1 se
almacena en f.
Ejemplo: :
INCF CONT,1
Incrementa
el
Descripción:
contenido del registro f. Si d es 0, el
resultado se almacena en W, si d es 1
se almacena en f. Si la resta es 0 salta
la siguiente instrucción, en cuyo caso
costaría 2 ciclos.
Ejemplo:
INCFSC REG,0
GOTO NO_ES_0
SI_ES_0 Instrucción
NO_ES_0 Salta instrucción anterior
Antes: PC = ORIGEN
Después: PC = DESTINO
Decremento de f
Antes: CONT = 0xFF, Z = 0
Después: CONT = 0x00, Z = 1
38
INCFSZ Incremento y salto