PICのアセンブラ命令一覧
バイト処理命令
命令 | 機能 | 影響を受けるフラグ | 命令サイクル数 |
---|---|---|---|
ADDWF f, d | 加算 W + f → W か f へ格納 | C, DC, Z | 1 |
ANDWF f, d | 論理積 W AND f → W か f へ格納 | Z | 1 |
CLRF f | f をゼロクリア | Z | 1 |
CLRW | W をゼロクリア | Z | 1 |
COMF f, d | f の 0,1 反転 → W か f へ格納 | Z | 1 |
DECF f, d | f - 1 → W か f へ格納 | Z | 1 |
DECFSZ f, d | f - 1 → W か f 結果ゼロなら次命令スキップ | なし | 1(2) |
INCF f, d | f + 1 → W か f へ格納 | Z | 1 |
INCFSZ f, d | f + 1 → W か f 結果ゼロなら次命令スキップ | なし | 1(2) |
IORWF f, d | 論理和 W OR f → W か f へ格納 | Z | 1 |
MOVF f, d | 移動 f から W または f 自身へ格納 | Z | 1 |
MOVWF f | 移動 W から f へ格納 | なし | 1 |
NOP | 何もしない | なし | 1 |
RLF f, d | 1ビット左へシフト → W か f へ格納 | C | 1 |
RRF f, d | 1ビット右へシフト → W か f へ格納 | C | 1 |
SUBWF f, d | 減算 f - W → W か f へ格納 | C, DC, Z | 1 |
SWAPF f, d | f の上位と下位を入れ替え → W か f へ格納 | なし | 1 |
XORWF f, d | 排他的論理和 W XOR f → W か f へ格納 | Z | 1 |
ビット処理命令
命令 | 機能 | 影響を受けるフラグ | 命令サイクル数 |
---|---|---|---|
BCF f, b | f の b ビット目をゼロにクリアする | なし | 1 |
BSF f, b | f の b ビット目を1にセットする。 | なし | 1 |
BTFSC f, b | f の b ビット目がゼロだったら次命令スキップ | なし | 1(2) |
BTFSS f, b | f の b ビット目が1だったら次命令スキップ | なし | 1(2) |
リテラル処理命令
命令 | 機能 | 影響を受けるフラグ | 命令サイクル数 |
---|---|---|---|
ADDLW k | 定数加算 W + k → W へ格納 | C, DC, Z | 1 |
ANDLW k | 定数論理積 W AND k → W へ格納 | Z | 1 |
IORLW k | 定数論理和 W OR k → W へ格納 | Z | 1 |
MOVLW k | 定数移動 k → W へ格納 | なし | 1 |
SUBLW k | 定数減算 k - W → W へ格納 | Z | 1 |
XORLW k | 排他的論理和 W XOR k → W へ格納 | Z | 1 |
ジャンプ命令
命令 | 機能 | 影響を受けるフラグ | 命令サイクル数 |
---|---|---|---|
CALL k | サブルーチン k へジャンプ | なし | 2 |
GOTO k | k 番地へジャンプ | なし | 2 |
RETFIE | 割り込み許可で戻る | なし | 2 |
RETLW k | W に k を格納して戻る | なし | 2 |
RETURN | サブルーチンから戻る | なし | 2 |
その他
命令 | 機能 | 影響を受けるフラグ | 命令サイクル数 |
---|---|---|---|
CLRWDT | ウォッチドックタイマクリア | なし | 1 |
SLEEP | スリープモードにする | なし | 1 |
オペランド
- f:レジスタファイルのアドレス
- W:ワーキングレジスタ
- b:ビットの位置(0〜7)
- k:リテラル(定数データ)
- d:格納先 0 なら W へ格納、1 なら指定のレジスタファイルに格納
フラグ(STATUS レジスタ)
- Z:ゼロステータス
- C:キャリーステータス
- DC:下位4ビットのキャリーステータス
PIC16F87レジスタ
Bank 0 | Address | Bank 1 | Address | Bank 2 | Address | Bank 3 | Address |
---|---|---|---|---|---|---|---|
Indirect addr | 00h | Indirect addr | 80h | Indirect addr | 100h | Indirect addr | 180h |
TMR0 | 01h | OPTION_REG | 81h | TMR0 | 101h | OPTION_REG | 181h |
PCL | 02h | PCL | 82h | PCL | 102h | PCL | 182h |
STATUS | 03h | STATUS | 83h | STATUS | 103h | STATUS | 183h |
FSR | 04h | FSR | 84h | FSR | 104h | FSR | 184h |
PORTA | 05h | TRISA | 85h | WDTCON | 105h | 使用不可 | 185h |
PORTB | 06h | TRISB | 86h | PORTB | 106h | TRISB | 186h |
使用不可 | 07h | 使用不可 | 87h | 使用不可 | 107h | 使用不可 | 187h |
08h | 88h | 108h | 188h | ||||
09h | 89h | 109h | 189h | ||||
PCLATH | 0Ah | PCLATH | 8Ah | PCLATH | 10Ah | PCLATH | 18Ah |
INTCON | 0Bh | INTCON | 8Bh | INTCON | 10Bh | INTCON | 18Bh |
PIR1 | 0Ch | PIE1 | 8Ch | EEDATA | 10Ch | EECON1 | 18Ch |
PIR2 | 0Dh | PIE2 | 8Dh | EEADR | 10Dh | EECON2 | 18Dh |
TMR1L | 0Eh | PCON | 8Eh | EEDATH | 10Eh | Reserved | 18Eh |
TMR1H | 0Fh | OSCCON | 8Fh | EEADRH | 10Fh | Reserved | 18Fh |
T1CON | 10h | OSCTUNE | 90h | 汎用レジスタ 16Bytes |
110h | 汎用レジスタ 16Bytes |
190h |
TMR2 | 11h | 使用不可 | 91h | 111h | 191h | ||
T2CON | 12h | PR2 | 92h | 112h | 192h | ||
SSPBUF | 13h | SSPADD | 93h | 113h | 193h | ||
SSPCON | 14h | SSPSTAT | 94h | 114h | 194h | ||
CCPR1L | 15h | 使用不可 | 95h | 115h | 195h | ||
CCPR1H | 16h | 96h | 116h | 196h | |||
CCP1CON | 17h | 97h | 117h | 197h | |||
RCSTA | 18h | TXSTA | 98h | 118h | 198h | ||
TXREG | 19h | SPBRG | 99h | 119h | 199h | ||
RCREG | 1Ah | 使用不可 | 9Ah | 11Ah | 19Ah | ||
使用不可 | 1Bh | 9Bh | 11Bh | 19Bh | |||
1Ch | CMCON | 9Ch | 11Ch | 19Ch | |||
1Dh | CVRCON | 9Dh | 11Dh | 19Dh | |||
1Eh | 使用不可 | 9Eh | 11Eh | 19Eh | |||
1Fh | 9Fh | 11Fh | 19Fh | ||||
汎用レジスタ 96Bytes |
20h | 汎用レジスタ 80Bytes |
A0h | 汎用レジスタ 80Bytes |
120h | 汎用レジスタ 80Bytes |
1A0h |
- | - | - | - | ||||
- | - | - | - | ||||
- | EFh | 16Fh | 1EFh | ||||
- | accesses 70h-7Fh |
F0h | accesses 70h-7Fh |
170h | accesses 70h-7Fh |
1F0h | |
- | - | - | - | ||||
- | - | - | - | ||||
7Fh | FFh | 17Fh | 1FFh |