| Byte-Oriented File Register Operations |  
| Hex | Mnemonic | Description | Function |  
| 07df | ADDWF | f,d | Add W and f   | (d) := (W) + (f) |  
| 05df | ANDWF | f,d | AND W and f   | (d) := (W) AND (f) |  
| 01'1'f | CLRF | f | Clear f   | (f) := 0 |  
| 01xx | CLRW |   | Clear W | W :=0 |  
| 09df | COMF | f,d | Complement  | d := f NOT f |  
| 03df | DECF | f,d | Decrement  | d := f - 1 |  
| 0Bdf | DECFSZ | f,d   | Decrement f, skip if zero   | d := f - 1, skip if 0 |  
| 0Adf | INCF | f,d   | Increment f   | d := f + 1 |  
| 0Fdf | INCFSZ | f,d   | Increment f, skip if zero   | d := f + 1, skip if 0 |  
| 04df | IORWF | f,d   | Inclusive OR W and f   | d := W OR f |  
| 08df | MOVF | f,d   | Move f   | d := f |  
| 00'1'f | MOVWF | f   | Move W to f   | f := W |  
| 0000 | NOP |   | No operation |   |  
| 0Ddf | RLF | f,d   | Rotate left f |   |  
| 0Cdf | RRF | f,d   | Rotate right f |   |  
| 02df | SUBWF | f,d   | Subtract W from f   | d := f - W |  
| 0Edf | SWAPF | f,d   | Swap halves f   | f(0:3) ? f(4:7) ? d |  
| 06df | XORWF | f,d   | Exclusive OR W and f   | d := W .XOR. f |  
| Bit-Oriented File Register Operations |  
| Hex | Mnemonic | Description | Function |  
| 4bf   | BCF   | f,b   | Bit b in register f is cleared | f(b) := 0 |  
| 5bf   | BSF   | f,b   | Bit b in register f is set | f(b) := 1 |  
| 6bf   | BTFSC   | f,b   | test bit b of register f, skip next instruction if clear   | skip if f(b) = 0 |  
| 7bf   | BTFSS   | f,b   | test bit b of register f, skip next instruction if set   | skip if f(b) = 1 |  
| Literal and Control Operations |  
| Hex | Mnemonic | Description | Function |  
| 3Ekk   | ADDLW   | kk   | Add literal to W   | (W) := kk + (W)   |  
| 39kk   | ANDLW   | kk   | AND literal and W   | (W) := kk AND (W) |  
| 2'0'kkk   | CALL   | kkk   | Call subroutine   | TOS := PC + 1 PC := kk PC<12:11> := (PCLATH<4:3>) |  
| 0064   | CLRWDT  |    | Clear watchdog timer   | WDT (and Prescaler if assigned) := 0   |  
| 2'1'kkk   | GOTO   | kkk   | Goto address (k is nine bits)   | PC(9 bits) := kkk  |  
| 38kk   | IORLW   | kk   | Incl. OR literal and W   | WREG := kk OR WREG   |  
| 30kk   | MOVLW   | kk   | Move Literal to W   | WREG := kk   |  
| 0062   | OPTION  |    | Load OPTION register (1)  | OPTION Register := WREG  |  
| 0009   | RETFIE   |    | Return from Interrupt   | PC := TOS, GIE := 1   |  
| 34kk   | RETLW   | kk   | Return with literal in W   | WREG := kk, PC := TOS   |  
| 0008   | RETURN  |    | Return from subroutine   | PC := TOS  |  
| 0063   | SLEEP   |    | Go into Standby Mode   | WDT := 0, stop oscillator   |  
| 3Ckk   | SUBLW   | kk   | Subtract W from literal  | WREG := kk - WREG   |  
| 006r   | TRIS   | r   | Tristate port r (1) | I/O control reg r := WREG   |  
| 3Akk   | XORLW   | kk   | Exclusive OR literal and W   | WREG := kk XOR WREG   |  
 
 | 
f = rgister file address (0x00 to 0x7F) 
W = working register (accumulator) 
b = bit address within an 8-bit file register 
k = literal field, constant data or label 
x = don't care location 
d = destination select 
d = 0: store result in W
d = 1 : store result in f
PC = program counter 
TO = time-out bit 
PD = power-down bit
 |