Antes de continuar es necesario definir algunos terminos que se usaran para explicar las instrucciones:
Enviado por Albert • 1 de Noviembre de 2017 • 1.511 Palabras (7 Páginas) • 588 Visitas
...
Z
Ejemplo: MOVF REG,0
Después de la instrucción: W=REG
RLF: Rota el registro f a la izquierda
El contenido del registro ’f’ se rota una posición a la izquierda. El bit de más peso pasa al carry y el carry se introduce por el bit de menos peso de ’f’. Si d=0, el resultado se coloca en el registro W. Si d=1, el resultado queda en el registro ’f’.
Sintaxis: [etiqueta] RLF f,d
Flags afectados: C
Ejemplo: RLF REG,1
Antes de la instrucción: REG=b’11100110’, C=0
Después de la instrucción: REG=b’11001100’, C=1
RRF: Rota el registro f a la derecha
El contenido del registro ’f’ se rota una posición a la derecha. El bit de menos peso pasa al carry y el carry se introduce por el bit de más peso de ’f’. Si d=0, el resultado se coloca en el registro W. Si d=1, el resultado queda en el registro ’f’.
Sintaxis: [etiqueta] RLF f,d
Flags afectados: C
Ejemplo: RLF REG,1
Antes de la instrucción: REG=b’11100110’, C=0
Después de la instrucción: REG=b’01110011’, C=0
SUBWF: Resta f - W
Resta el contenido del registro ’f’ menos el contenido del registro W. Si d=0, el resultado se almacena en el registro W. Si d=1, el resultado se almacena en el registro ’f’.
Sintaxis: [etiqueta] SUBWF f,d
Flags afectados: C, DC, Z
Ejemplo: SUBWF REG,1
Antes de la instrucción: REG=0x01, W=0x02
Después de la instrucción: REG=0xFF, W=0x02
SWAPF: Intercambio de f
El nibble bajo del registro ’f’ se intercambia con el nibble alto del mismo. Si d=0, el resultado se coloca en el registro W. Si d=1, el resultado queda en el registro ’f’.
Sintaxis: [etiqueta] SWAPF f,d
Flags afectados: Ninguno
Ejemplo: SWAPF REG,1
Antes de la instrucción: REG=0x54
Después de la instrucción: REG=0x45
XORWF: W XOR f
Realiza la función lógica OR exclusiva entre el contenido del registro W y el registro ’f’. Si d=0, el resultado se almacena en el registro W. Si d=1 el resultado se almacena en el registro ’f’.
Sintaxis: [etiqueta] XORWF f,d
Flags afectados: Z
Ejemplo: XORWF REG,1
Antes de la instrucción: REG=0xAF, W=0xB5
Después de la instrucción: REG=0x1A, W=0xB5
NOP: No operacion
No realiza ninguna operacion, solo consume un ciclo de reloj
Sintaxis: [etiqueta] NOP
Instrucciones orientadas a bits
BCF: Borra un bit
Borra el bit ’b’del registro ’f’
Sintaxis: [etiqueta] BCF f,b
Ejemplo: BCF REG,0
Antes de la instrucción: REG=b’01101101’
Después de la instrucción: REG=b’01101100’
BSF: Activa un bit
Activa el bit ’b’ del registro ’f’
Sintaxis: [etiqueta] BSF f,b
Ejemplo: BSF REG,2
Antes de la instrucción: REG=b’01001001’
Después de la instrucción: REG=b’01001011’
BTFSC: Checa un bit y salta si es 0
Si el bit "b" del registro "f" es 0, se salta una instrucción y se continúa con la ejecución.
Sintaxis: [etiqueta] BTFSC f,b
BTFSS: Checa un bit y salta si es 1
Si el bit "b" del registro "f" es 1, se salta una instrucción y se continúa con la ejecución.
Sintaxis: [etiqueta] BTFSS f,b
Instrucciones orientadas a constantes y de control
ANDLW: W AND literal
Realiza la operación lógica AND entre el registro W y la constante "k". El resultado se almacena en el registro W.
Sintaxis: [label] ANDWL k
Flags afectados: Z
Ejemplo: ANDLW 0x5F
Antes de la instrucción: W=0xA3
Después de la instrucción: W=0x03
CALL: Llamada a subrutina
Llamada y salto a subrutina. La dirección de retorno se guarda en el stack. La constante "k" de 8 bits forma la dirección de salto y se carga en los bits del PC. Los bits del PC se cargan con los bits del registro "STATUS". PC se pone a 0.
Sintaxis: [etiqueta] CALL k
Ejemplo: INICIO CALL DESTINO
Antes de la instrucción: PC=INICIO
Después de la instrucción: PC=DESTINO
CLRWDT: Borra el watchdog timer
Esta instrucción borra tanto el "watchdog" como el prescaler. Los bits TO y PD del registro de estado se ponen a "1".
Sintaxis: [label] CLRWDT
Flags afectados: TO, PD
GOTO: Salto incondicional
Se trata de un salto incondicional. Los 9 bits de la constante "k" que
...