まくまくいろいろノート
PIC アセンブラ (PIC16Fxxx) 命令セット ─ PIC めもめも
2002-08-01

PIC16Fxxx 命令セット (14bit)

カテゴリニモニック意味コード
加算・減算 ADDWF f, d W + f → d Add W and f 00 0111 dfff ffff
SUBWF f, d f - W → d Subtract W from f 00 0010 dfff ffff
ADDLW k W + k → W Add literal and W 11 111x kkkk kkkk
SUBLW kk - W → W Subtract W from literal 11 110x kkkk kkkk
論理演算 ANDWF f, d W AND f → d AND W with f 00 0101 dfff ffff
IORWF f, d W OR f → d Inclusive OR W with f 00 0100 dfff ffff
XORWF f, d W XOR f → d Exclusive OR W with f 00 0110 dfff ffff
ANDLW k W AND k → W And literal with W 11 1001 kkkk kkkk
IORLW k W OR k → W Inclusive OR literal with W 11 1000 kkkk kkkk
XORLW k W XOR k → W Exclusive OR literal with W 11 1010 kkkk kkkk
COMF f, d f → d Complement f 00 1001 dfff ffff
移動 MOVF f, d f → d Move f 00 1000 dfff ffff
MOVWF f W → f Move W to f 00 0000 1fff ffff
MOVLW k k → W Move litaral to W 11 00xx kkkk kkkk
クリア CLRF f 0 → f Clear f 00 0001 1fff ffff
CLRW W 0 → W Clear W 00 0001 0xxx xxxx
インクリメント
デクリメント
DECF f, d f - 1 → d Decrement f 00 0011 dfff ffff
INCF f, d f + 1 → d Increment f 00 1010 dfff ffff
DECFSZ f, d f - 1 → d
Skip if result = 0
Decrement f, Skip if 0 00 1011 dfff ffff
INCFSZ f, d f + 1 → d
Skip if result = 0
Increment f, Skip if 0 00 1111 dfff ffff
ビット操作 BCF f, b 0 → f[b] Bit Clear f 01 00bb bfff ffff
BSF f, b 1 → f[b] Bit set f 01 01bb bfff ffff
スキップ BTFSC f, b Skip if f[b] = 0 Bit Test f, Skip if Clear 01 10bb bfff ffff
BTFSS f, b Skip if f[b] = 1 Bit Test f, Skip if Set 01 11bb bfff ffff
シフト RLF f, d f[n] → d[n+1]
f[7] → C → d[0]
Rotate Left f through Carry
(左巡回シフト)
00 1101 dfff ffff
RRF f, d f[n] → d[n-1]
f[0] → c → d[7]
Rotate Right f through Carry
(右巡回シフト)
00 1100 dfff ffff
SWAPF f, d f[0:3] → d[4:7]
f[4:7] → d[0:3]
Swap nibbles in f
(上位ビット ⇔ 下位ビット)
00 1110 dfff ffff
ジャンプ GOTO k Go to address 10 1kkk kkkk kkkk
CALL k Call subroutine 10 0kkk kkkk kkkk
RETFIE Return from interrupt 00 0000 0000 1001
RETLW k Return with literal in W 11 01xx kkkk kkkk
RETURN Return from Subroutine 00 0000 0000 1000
その他 CLRWDT Clear Watchdog Timer 00 0000 0110 0100
NOP No Operation 00 0000 0xx0 0000
SLEEP Go into standby mode 00 0000 0110 0011
OPCODE フィールドの説明
FieldSizeDescription
f7 ワーキングレジスタのアドレス (0x00 ~ 0x7F)
W ワーキングレジスタ(アキュムレータ)
b3 8 ビットファイルレジスタ内のビットアドレス
k8/11 リテラル、定数またはラベル
(0 ~ 255) or (-128 ~ 127) or (アスキーコード 'A' とか)
x 無効 (0 or 1)
アセンブラは x=0 としてコードを生成します。
すべてのソフトウェアツールとの互換性を確保するために x=0 を推奨します。
d1 結果格納先指名子 (0 or 1)
0: W に格納
1: ファイルレジスタ f に格納 (Default)
PC プログラムカウンタ
TO タイムアウトビット
PD パワーダウンビット
2002-08-01