Also available in CCS HTML, HTML and PDF. This version transcribed, and misc errors introduced, by James Newton.
| Mnemonic,Operands | Description | Cycles | 16-Bit Instruction | Status Affected | Notes | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| BYTE-ORIENTED FILE REGISTER OPERATIONS | |||||||||||
| ADDWF | f, | d, | a | Add W and f | 1 | 0010 01da ffff ffff | C,DC,Z,OV,N | 1,2 | |||
| ADDWFC | f, | d, | a | Add W and Carry bit to f | 1 | 0010 00da ffff ffff | C,DC,Z,OV,N | 1,2 | |||
| ANDWF | f, | d, | a | AND W with f | 1 | 0001 01da ffff ffff | Z,N | 1,2 | |||
| CLRF | f, | a | Clear f | 1 | 0110 101a ffff ffff | Z | 2 | ||||
| COMF | f, | d, | a | Complement f | 1 | 0001 11da ffff ffff | Z,N | 1,2 | |||
| CPFSEQ | f, | a | Compare f with W, skip = | 1 (2 or 3) | 0110 001a ffff ffff | 4 | |||||
| CPFSGT | f, | a | Compare f with W, skip > | 1 (2 or 3) | 0110 010a ffff ffff | 4 | |||||
| CPFSLT | f, | a | Compare f with W, skip < | 1 (2 or 3) | 0110 000a ffff ffff | 1,2 | |||||
| DECF | f, | d, | a | Decrement f | 1 | 0000 01da ffff ffff | C,DC,Z,OV,N | 1-4 | |||
| DECFSZ | f, | d, | a | Decrement f, Skip if 0 | 1 (2 or 3) | 0010 11da ffff ffff | 1-4 | ||||
| DCFSNZ | f, | d, | a | Decrement f, Skip if Not 0 | 1 (2 or 3) | 0100 11da ffff ffff | 1,2 | ||||
| INCF | f, | d, | a | Increment f | 1 | 0010 10da ffff ffff | C,DC,Z,OV,N | 1-4 | |||
| INCFSZ | f, | d, | a | Increment f, Skip if 0 | 1 (2 or 3) | 0011 11da ffff ffff | 4 | ||||
| INFSNZ | f, | d, | a | Increment f, Skip if Not 0 | 1 (2 or 3) | 0100 10da ffff ffff | 1,2 | ||||
| IORWF | f, | d, | a | Inclusive OR W with f | 1 | 0001 00da ffff ffff | Z,N | 1,2 | |||
| MOVF | f, | d, | a | Move f | 1 | 0101 00da ffff ffff | Z,N | 1 | |||
| MOVFF | fs, | fd | Move fs (source) 1st word to | 2 | 1100 ffff ffff ffff | ||||||
| fd (destination) 2nd word | 1111 ffff ffff ffff | ||||||||||
| MOVWF | f, | a | Move W to f | 1 | 0110 111a ffff ffff | ||||||
| MULWF | f, | a | Multiply W with f | 1 | 0000 001a ffff ffff | ||||||
| NEGF | f, | a | Negate f | 1 | 0110 110a ffff ffff | C,DC,Z,OV,N | 1,2 | ||||
| RLCF | f, | d, | a | Rotate Left f through Carry | 1 | 0011 01da ffff ffff | C,Z,N | ||||
| RLNCF | f, | d, | a | Rotate Left f (No Carry) | 1 | 0100 01da ffff ffff | Z,N | 1,2 | |||
| RRCF | f, | d, | a | Rotate Right f through Carry | 1 | 0011 00da ffff ffff | C,Z,N | ||||
| RRNCF | f, | d, | a | Rotate Right f (No Carry) | 1 | 0100 00da ffff ffff | Z,N | ||||
| SETF | f, | a | Set f | 1 | 0110 100a ffff ffff | ||||||
| SUBFWB | f, | d, | a | Subtract f from W w/borrow | 1 | 0101 01da ffff ffff | C,DC,Z,OV,N | 1,2 | |||
| SUBWF | f, | d, | a | Subtract W from f | 1 | 0101 11da ffff ffff | C,DC,Z,OV,N | ||||
| SUBWFB | f, | d, | a | Subtract W from f w/borrow | 1 | 0101 10da ffff ffff | C,DC,Z,OV,N | 1,2 | |||
| SWAPF | f, | d, | a | Swap nibbles in f | 1 | 0011 10da ffff ffff | 4 | ||||
| TSTFSZ | f, | a | Test f, skip if 0 | 1 (2 or 3) | 0110 011a ffff ffff | 1,2 | |||||
| XORWF | f, | d, | a | Exclusive OR W with f | 1 | 0001 10da ffff ffff | Z,N | ||||
| BIT-ORIENTED FILE REGISTER OPERATIONS | |||||||||||
| BCF | f, | b, | a | Bit Clear f | 1 | 1001 bbba ffff ffff | 1,2 | ||||
| BSF | f, | b, | a | Bit Set f | 1 | 1000 bbba ffff ffff | 1,2 | ||||
| BTFSC | f, | b, | a | Bit Test f, Skip if Clear | 1 (2 or 3) | 1011 bbba ffff ffff | 3,4 | ||||
| BTFSS | f, | b, | a | Bit Test f, Skip if Set | 1 (2 or 3) | 1010 bbba ffff ffff | 3,4 | ||||
| BTG | f, | b, | a | Bit Toggle f | 1 | 0111 bbba ffff ffff | 1,2 | ||||
| CONTROL OPERATIONS | |||||||||||
| BC | n | Branch if Carry | 1 (2) | 1110 0011 nnnn nnnn | |||||||
| BN | n | Branch if Negative | 1 (2) | 1110 0110 nnnn nnnn | |||||||
| BNC | n | Branch if Not Carry | 1 (2) | 1110 0011 nnnn nnnn | |||||||
| BNN | n | Branch if Not Negative | 1 (2) | 1110 0111 nnnn nnnn | |||||||
| BNOV | n | Branch if Not Overflow | 1 (2) | 1110 0101 nnnn nnnn | |||||||
| BNZ | n | Branch if Not Zero | 2 | 1110 0001 nnnn nnnn | |||||||
| BOV | n | Branch if Overflow | 1 (2) | 1110 0100 nnnn nnnn | |||||||
| BRA | n | Branch Unconditionally | 1 (2) | 1101 0nnn nnnn nnnn | |||||||
| BZ | n | Branch if Zero | 1 (2) | 1110 0000 nnnn nnnn | |||||||
| CALL | n, | s | Call subroutine 1st word | 2 | 1110 110s kkkk kkkk | ||||||
| 2nd word | 1111 kkkk kkkk kkkk | ||||||||||
| CLRWDT | -- | Clear Watchdog Timer | 1 | 0000 0000 0000 0100 | TO,PD | ||||||
| DAW | -- | Decimal Adjust W | 1 | 0000 0000 0000 0111 | C | ||||||
| GOTO | n | Goto address 1st word | 2 | 1110 1111 kkkk kkkk | |||||||
| 2nd word | 1111 kkkk kkkk kkkk | ||||||||||
| NOP | -- | No Operation | 1 | 0000 0000 0000 0000 | |||||||
| NOP | -- | No Operation (Note 4) | 1 | 1111 xxxx xxxx xxxx | 4 | ||||||
| POP | -- | Pop top of return stack | 1 | 0000 0000 0000 0110 | |||||||
| PUSH | -- | Push top of return stack | 1 | 0000 0000 0000 0101 | |||||||
| RCALL | n | Relative Call | 2 | 1101 1nnn nnnn nnnn | |||||||
| RESET | Software device RESET | 1 | 0000 0000 1111 1111 | All | |||||||
| RETFIE | s | Return from interrupt | 2 | 0000 0000 0001 000s | GIE/GIEH, | ||||||
| PEIE/GIEL | |||||||||||
| RETLW | k | Return with literal in W | 2 | 0000 1100 kkkk kkkk | |||||||
| RETURN | s | Return from Subroutine | 2 | 0000 0000 0001 001s | |||||||
| SLEEP | -- | Go into Standby mode | 1 | 0000 0000 0000 0011 | TO,PD | ||||||
| LITERAL OPERATIONS | |||||||||||
| ADDLW | k | Add literal and W | 1 | 0000 1111 kkkk kkkk | C,DC,Z,OV,N | ||||||
| ANDLW | k | AND literal with W | 1 | 0000 1011 kkkk kkkk | Z,N | ||||||
| IORLW | k | Inclusive OR literal with W | 1 | 0000 1001 kkkk kkkk | Z,N | ||||||
| LFSR | f, | k | Move literal (12-bit) 2nd | 2 | 1110 1110 00ff kkkk | ||||||
| word to FSRx 1st word | 1111 0000 kkkk kkkk | ||||||||||
| MOVLB | k | Move literal to BSR<3:0> | 1 | 0000 0001 0000 kkkk | |||||||
| MOVLW | k | Move literal to W | 1 | 0000 1110 kkkk kkkk | |||||||
| MULLW | k | Multiply literal with W | 1 | 0000 1101 kkkk kkkk | |||||||
| RETLW | k | Return with literal in W | 2 | 0000 1100 kkkk kkkk | |||||||
| SUBLW | k | Subtract W from literal | 1 | 0000 1000 kkkk kkkk | C,DC,Z,OV,N | ||||||
| XORLW | k | Exclusive OR literal with W | 1 | 0000 1010 kkkk kkkk | Z,N | ||||||
| DATA MEMORY <-> OPERATIONS | |||||||||||
| TBLRD | * | Table Read | 2 | 0000 0000 0000 1000 | |||||||
| TBLRD | *+ | Table Read post-increment | 0000 0000 0000 1001 | ||||||||
| TBLRD | *- | Table Read post-decrement | 0000 0000 0000 1010 | ||||||||
| TBLRD | +* | Table Read pre-increment | 0000 0000 0000 1011 | ||||||||
| TBLWT | Table Write | 2 | 0000 0000 0000 1100 | 5 | |||||||
| TBLWT | *+ | Table Write post-increment | 0000 0000 0000 1101 | ||||||||
| TBLWT | *- | Table Write post-decrement | 0000 0000 0000 1110 | ||||||||
| TBLWT | +* | Table Write pre-increment | 0000 0000 0000 1111 | ||||||||
| 1: | When a PORT register is modified as a function of itself (e.g., MOVF PORTB,1), the value used will be that value present on the pins themselves. For example, if the data latch is '1' for a pin configured as input and is driven low by an external device, the data will be written back with a '0'. |
| 2: | If this instruction is executed on the TMR0 register (and, where applicable, d = 1), the prescaler will be cleared if assigned to the Timer0 Module. |
| 3: | If Program Counter (PC) is modified or a conditional test is true, the instruction requires two cycles. The second cycle is executed as a NOP. |
| 4: | Some instructions are 2-word instructions. The second word of these instructions will be executed as a NOP, unless the first word of the instruction retrieves the information embedded in these 16 bits. This ensures that all program memory locations have a valid instruction. |
| 5: | If the Table Write starts the write cycle to internal memory, the write will continue until terminated. |
f = 8-bit register file address
d = destination, W (0) or f (1)
a = access bit, (0) access bank or (1) bank selected by BSR
b = bit address within an 8-bit file register
W = WREG (accumulator)
k = literal, constant, or label
x = don't care
n = relative address (branch) or a direct address
s = Fast Call/Return select bit (0) normal, (1) fast mode
C = Carry Status bit
DC = Digit Carry Status bit
Z = Zero Status bit
OV = Overflow Status bit
N = Negative Status bit
TO = Time-out bit
PO = Power-down bit
Questions: