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 k | k - 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 | ||
| Field | Size | Description |
|---|---|---|
| f | 7 | ワーキングレジスタのアドレス (0x00 ~ 0x7F) |
| W | ─ | ワーキングレジスタ(アキュムレータ) |
| b | 3 | 8 ビットファイルレジスタ内のビットアドレス |
| k | 8/11 | リテラル、定数またはラベル (0 ~ 255) or (-128 ~ 127) or (アスキーコード 'A' とか) |
| x | ─ | 無効 (0 or 1) アセンブラは x=0 としてコードを生成します。 すべてのソフトウェアツールとの互換性を確保するために x=0 を推奨します。 |
| d | 1 | 結果格納先指名子 (0 or 1) 0: W に格納 1: ファイルレジスタ f に格納 (Default) |
| PC | ─ | プログラムカウンタ |
| TO | ─ | タイムアウトビット |
| PD | ─ | パワーダウンビット |