User Tools

Site Tools


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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki