pic:pic16-opcodes
PIC16 assembler mnemonics
Transfers
| Traditional | Op code | as | Operation |
| movf w | 0010 0000 | xta | w = f |
| tst f | 0010 0010 | tst | f = f, set Z |
| movwf f | 0000 0010 | atx | f = w |
| movlw k | 1100 | cta | w = c |
| clrw | 0000 0100 | az | w = 0 |
| clrf f | 0000 0110 | xz | f = 0 |
Conditional ops
| Traditional | Op code | as | Operation |
| btfsc f,b | 0110 | bs? | if (f.b != 0) |
| btfss f,b | 0111 | bz? | if (f.b == 0) |
| decfsz f,w | 0010 1100 | x–a? | w = f-1; if (w != 0) |
| decfsz f | 0010 1110 | x–? | f = f-1; if (f != 0) |
| incfsz f,w | 0011 1100 | x++a? | w = f+1; if (w != 0) |
| incfsz f | 0011 1110 | x++? | f = f+1; if (f != 0) |
Arithmetic ops
| Traditional | Op code | as | Operation |
| addwf f,w | 0001 1110 | a+x | w += f |
| addwf f | 0001 1111 | x+a | f += w |
| subwf f,w | 0000 1000 | a-x | w = f - w |
| subwf f | 0000 1010 | x-a | f -= w |
| decf f,w | 0000 1100 | x–a | w = f-1 |
| decf f | 0000 1110 | x– | f = f-1 |
| incf f,w | 0010 1000 | x++a | w = f+1 |
| incf f | 0010 1010 | x++ | f = f+1 |
Logical ops
| Traditional | Op code | as | Operation |
| andwf f,w | 0001 0100 | a&x | w &= f |
| andwf f | 0001 0110 | x&a | f &= w |
| andlw k | 1110 | a&c | w &= c |
| iorwf f,w | 0001 0000 | a|x | w |= f |
| iorwf f | 0001 0010 | x|a | f |= w |
| iorlw k | 1101 | a|c | w |= c |
| xorwf f,w | 0001 1000 | a^x | w ^= f |
| xorwf f | 0001 1010 | x^a | f ^= w |
| xorlw k | 1111 | a^c | w ^= c |
| comf f,w | 0010 0100 | xca | w = ~f |
| comf f | 0010 0110 | xc | f = ~f |
| rlf f,w | 0011 0100 | xc«a | w = carry:f « 1 |
| rlf f | 0011 0110 | xc«x | f = carry:f « 1 |
| rrcf f,w | 0011 0000 | xc»a | w = carry:f » 1 |
| rrcf f | 0011 0010 | xc»x | f = carry:f » 1 |
| swapf f | 0011 1010 | xw | f = swap(f) |
| swapf f,w | 0011 1000 | xwa | w = swap(f) |
Bit ops
| Traditional | Op code | as | Operation |
| bcf f,b | 0100 | bz | f.b = 0 |
| bsf f,b | 0101 | bs | f.b = 1 |
Control flow
| Traditional | Op code | as | Operation |
| goto k | 101 | goto | goto c() |
| call k | 1001 | call | call c() |
| retlw k | 1000 | ret | w = c; return |
| nop | 0000 0000 0000 | nop | – |
Special ops
| Traditional | Op code | as | Operation |
| clrwdt | 0000 0000 0100 | awake | clear watchdog timer |
| sleep | 0000 0000 0011 | sleep | enter sleep mode |
| option | 0000 0000 0010 | option | option := w |
| tris | 0000 0000 0110 | tris | tris := w |
pic/pic16-opcodes.txt · Last modified: 2006/08/11 16:52 by 127.0.0.1