■MOVF (move f) f レジスタの移動
書 式 [ラベル] MOVF f,d
オペランド f:レジスタアドレス(00〜7FH)
d:結果格納先(0 または 1)
実効内容 (f) → (dest)
f レジスタの内容を,d=0 なら Wreg に,d=1 なら f レジスタに上書きする.
影響フラグ 《Z》
演算結果が 0 の場合,Z=1.
演算結果が 0 でない場合,Z=0.
実効サイクル 1
 
■MOVWF (move W to f) Wreg を f レジスタに移動
書 式 [ラベル] MOVWF f
オペランド f:レジスタアドレス(00〜7FH)
実効内容 (Wreg) → (f)
Wreg の内容を f レジスタに移動(コピー)する.
影響フラグ なし
実効サイクル 1
 
■MOVLW (move literal to W) リテラルデータを Wreg に設定
書 式 [ラベル] MOVLW k
オペランド k:リテラルデータ(00〜7FH)
実効内容 k → (Wreg)
8 bit のリテラルデータを Wreg へ設定する.
影響フラグ なし
実効サイクル 1
 
■CLRF (clear f) f レジスタのゼロクリア
書 式 [ラベル]  CLRF  f
オペランド f:レジスタアドレス(00〜7FH)
実効内容 00H → (f)
f レジスタの内容をゼロでクリアし,Z フラグをセットする.
影響フラグ 《Z》
Z=1.
実効サイクル 1
 
■CLRW (clear W) Wreg のゼロクリア
書 式 [ラベル]  CLRW
オペランド なし
実効内容 00H → (Wreg)
Wreg の内容をゼロでクリアし,Z フラグをセットする.
影響フラグ 《Z》
Z=1.
実効サイクル 1
 
■ADDWF (add W and f) Wreg に f レジスタを加算
書 式 [ラベル]  ADDWF  f,d
オペランド f:レジスタアドレス(00〜7FH)
d:結果格納先(0 または 1)
実効内容 (Wreg) + (f) → (dest)
Wreg の内容に f レジスタの内容を加算し,結果を d=0 なら Wreg に,d=1 なら f レジスタに上書きする.
影響フラグ 《C,DC,Z》
8 bit がオーバーフローした場合,C=1.
下位 4 bit がオーバーフローした場合,DC=1.
結果が 0 の場合,Z=1.
上記以外の場合,C=0,DC=0,Z=0.
実効サイクル 1
 
■SUBWF (subtract W from f) f レジスタから Wreg を減算
書 式 [ラベル]  SUBWF  f,d
オペランド f:レジスタアドレス(00〜7FH)
d:結果格納先(0 または 1)
実効内容 (f) - (Wreg) → (dest)
f レジスタの内容に Wreg の 2 の補数を加算し,結果を d=0 なら Wreg に,d=1 なら f レジスタに上書きする.
影響フラグ 《C,DC,Z》
結果が正の場合,C=1,Z=0.
結果が 0 の場合,C=1,Z=1.
結果が負の場合,C=0,Z=0.
実効サイクル 1
 
■ADDLW (add literal and W) Wreg にリテラルデータを加算
書 式 [ラベル]  ADDLW  k
オペランド k:リテラルデータ(00〜7FH)
実効内容 k + (Wreg) → (Wreg)
8 bit のリテラルデータに Wreg の内容を加算し,結果を Wreg に上書きする.
影響フラグ 《C,DC,Z》
8 bit がオーバーフローした場合,C=1.
下位 4 bit がオーバーフローした場合,DC=1.
結果が 0 の場合,Z=1.
上記以外の場合,C=0,DC=0,Z=0.
実効サイクル 1
 
■SUBLW (subtract W from literal) リテラルデータから Wreg を減算
書 式 [ラベル]  SUBLW  k
オペランド k:リテラルデータ(00〜7FH)
実効内容 k - (Wreg) → (Wreg)
8 bit のリテラルデータから Wreg を引き算し,結果を Wreg に上書きする.
影響フラグ 《C,DC,Z》
結果が正の場合,C=1,Z=0.
結果が 0 の場合,C=1,Z=1.
結果が負の場合,C=0,Z=0.
実効サイクル 1
 
■ANDWF (and W with f) Wreg と f レジスタとの論理積演算
書 式 [ラベル]  ANDWF  f,d
オペランド f:レジスタアドレス(00〜7FH)
d:結果格納先(0 または 1)
実効内容 (Wreg) AND (f) → (dest)
Wreg の内容と f レジスタの内容との論理積(AND)演算をし,結果を d=0 なら Wreg に,d=1 なら f レジスタに上書きする.
影響フラグ 《Z》
演算結果が 0 の場合,Z=1.
演算結果が 0 でない場合,Z=0.
実効サイクル 1
 
■IORWF (inclusive OR W with f) Wreg と f レジスタとの論理和演算
書 式 [ラベル]  IORWF  f,d
オペランド f:レジスタアドレス(00〜7FH)
d:結果格納先(0 または 1)
実効内容 (Wreg) OR (f) → (dest)
Wreg の内容と f レジスタの内容との論理和(OR)演算をし,結果を d=0 なら Wreg に,d=1 なら f レジスタに上書きする.
影響フラグ 《Z》
演算結果が 0 の場合,Z=1.
演算結果が 0 でない場合,Z=0.
実効サイクル 1
 
■XORWF (exclusive OR W with f) Wreg と f レジスタとの排他的論理和演算
書 式 [ラベル]  XORWF  f,d
オペランド f:レジスタアドレス(00〜7FH)
d:結果格納先(0 または 1)
実効内容 (Wreg) XOR (f) → (dest)
Wreg の内容と f レジスタの内容との排他的論理和(XOR)演算をし,結果を d=0 なら Wreg に,d=1 なら f レジスタに上書きする.
影響フラグ 《Z》
演算結果が 0 の場合,Z=1.
演算結果が 0 でない場合,Z=0.
実効サイクル 1
 
■ANDLW (and literal with W) リテラルデータと Wreg との論理積演算
書 式 [ラベル]  ANDLW  k
オペランド k:リテラルデータ(00〜7FH)
実効内容 k AND (Wreg) → (Wreg)
8 bit のリテラルデータと Wreg の内容との論理積(AND)演算をし,結果を Wreg に上書きする.
影響フラグ 《Z》
演算結果が 0 の場合,Z=1.
演算結果が 0 でない場合,Z=0.
実効サイクル 1
 
■IORLW (inclusive OR literal with W) リテラルデータと Wreg との論理和演算
書 式 [ラベル]  IORLW  k
オペランド k:リテラルデータ(00〜7FH)
実効内容 k OR (Wreg) → (Wreg)
8 bit のリテラルデータと Wreg の内容との論理和(OR)演算をし,結果を Wreg に上書きする.
影響フラグ 《Z》
演算結果が 0 の場合,Z=1.
演算結果が 0 でない場合,Z=0.
実効サイクル 1
 
■XORLW (exclusive OR literal with W) リテラルデータと Wreg との排他的論理和演算
書 式 [ラベル]  XORLW  k
オペランド k:リテラルデータ(00〜7FH)
実効内容 k XOR (Wreg) → (Wreg)
8 bit のリテラルデータと Wreg の内容との排他的論理和(XOR)演算をし,結果を Wreg に上書きする.
影響フラグ 《Z》
演算結果が 0 の場合,Z=1.
演算結果が 0 でない場合,Z=0.
実効サイクル 1
 
■COMF (complement f) f レジスタの補数の演算
書 式 [ラベル]  COMF  f,d
オペランド f:レジスタアドレス(00〜7FH)
d:結果格納先(0 または 1)
実効内容 complement(f) → (dest)
f レジスタの内容の補数を演算し,結果を d=0 なら Wreg に,d=1 なら f レジスタに上書きする.
影響フラグ 《Z》
演算結果が 0 の場合,Z=1.
演算結果が 0 でない場合,Z=0.
実効サイクル 1
 
■DECF (decrement f) f レジスタのカウントダウン
書 式 [ラベル]  DECF  f,d
オペランド f:レジスタアドレス(00〜7FH)
d:結果格納先(0 または 1)
実効内容 (f) - 1 → (dest)
f レジスタの内容から 1 を減算し,結果を d=0 なら Wreg に,d=1 なら f レジスタに上書きする.
影響フラグ 《Z》
演算結果が 0 の場合,Z=1.
演算結果が 0 でない場合,Z=0.
実効サイクル 1
 
■INCF (incrememt f) f レジスタのカウントアップ
書 式 [ラベル]  INCF  f,d
オペランド f:レジスタアドレス(00〜7FH)
d:結果格納先(0 または 1)
実効内容 (f) + 1 → (dest)
f レジスタの内容に 1 を加算し,結果を d=0 なら Wreg に,d=1 なら f レジスタに上書きする.
影響フラグ 《Z》
演算結果が 0 の場合,Z=1.
演算結果が 0 でない場合,Z=0.
実効サイクル 1
 
■DECFSZ (decrement f, skip if 0) f レジスタを減算して結果が 0 ならスキップ
書 式 [ラベル]  DECFSZ  f,d
オペランド f:レジスタアドレス(00〜7FH)
d:結果格納先(0 または 1)
実効内容 (f) - 1 → (dest) ;skip if result=0
f レジスタの内容から 1 を減算し,結果を d=0 なら Wreg に,d=1 なら f レジスタに上書きする.
また,もし結果が 0 なら,次の命令を NOP に変えて実行する(スキップ).したがって,スキップ時は 2 サイクル命令となる.
影響フラグ なし
実効サイクル 1,スキップするときは 2
 
■INCFSZ (increment f, skip if 0) f レジスタを加算して結果が 0 ならスキップ
書 式 [ラベル]  INCFSZ  f,d
オペランド f:レジスタアドレス(00〜7FH)
d:結果格納先(0 または 1)
実効内容 (f) + 1 → (dest) ;skip if result=0
f レジスタの内容に 1 を加算し,結果を d=0 なら Wreg に,d=1 なら f レジスタに上書きする.
また,もし結果が 0 なら,次の命令を NOP に変えて実行する(スキップ).したがって,スキップ時は 2 サイクル命令となる.
影響フラグ なし
実効サイクル 1,スキップするときは 2
 
■BCF (bit clear f) f レジスタの指定ビットを 0 にする
書 式 [ラベル]  BCF  f,b
オペランド f:レジスタアドレス(00〜7FH)
b:ビット指定(0〜7)
実効内容 0 → f<b>
f レジスタの第 b ビットを 0 にする.
影響フラグ なし
実効サイクル 1
 
■BSF (bit set f) f レジスタの指定ビットを 1 にする
書 式 [ラベル]  BSF  f,b
オペランド f:レジスタアドレス(00〜7FH)
b:ビット指定(0〜7)
実効内容 1 → f<b>
f レジスタの第 b ビットを 1 にする.
影響フラグ なし
実効サイクル 1
 
■BTFSC (bit test f, skip if clear) f レジスタの第 b ビットが 0 ならスキップ
書 式 [ラベル]  BTFSC  f,b
オペランド f:レジスタアドレス(00〜7FH)
b:ビット指定(0〜7)
実効内容 skip if (f<b>) = 0
f レジスタの第 b ビットが 0 なら,次の命令を NOP に変えて実行する(スキップ).したがって,スキップ時は 2 サイクル命令となる.
影響フラグ なし
実効サイクル 1,スキップするときは 2
 
■BTFSS (bit test f, skip if set) fレジスタの第 b ビットが 1 ならスキップ
書 式 [ラベル]  BTFSS  f,b
オペランド f:レジスタアドレス(00〜7FH)
b:ビット指定(0〜7)
実効内容 skip if (f<b>) = 1
f レジスタの第 b ビットが 1 なら,次の命令を NOP に変えて実行する(スキップ).したがって,スキップ時は 2 サイクル命令となる.
影響フラグ なし
実効サイクル 1,スキップするときは 2
 
■RLF (rotate left through carry) f レジスタを左に巡回シフト
書 式 [ラベル]  RLF  f,d
オペランド f:レジスタアドレス(00〜7FH)
d:結果格納先(0 または 1)
実効内容 (f<n>) → (dest<n+1>)  n:0〜6
(f<7>) → C
C → (dest<0>)
f レジスタの内容を,キャリも含めて 1 ビット左に移動し,結果を d=0 なら Wreg に,d=1 なら f レジスタに上書きする.
影響フラグ 《C》
C=f レジスタの最上位ビット
実効サイクル 1
 
■RRF (rotate right rhrough carry) f レジスタを右に巡回シフト
書 式 [ラベル]  RRF  f,d
オペランド f:レジスタアドレス(00〜7FH)
d:結果格納先(0 または 1)
実効内容 (f<n>) → (dest<n-1>)  n:0〜6
(f<0>) → C
C → (dest<7>)
f レジスタの内容を,キャリも含めて 1 ビット右に移動し,結果を d=0 なら Wreg に,d=1 なら f レジスタに上書きする.
影響フラグ 《C》
C=f レジスタの最上位ビット
実効サイクル 1
 
■SWAPF (swap nibbles in f) f レジスタの上位と下位の入れ替え
書 式 [ラベル]  SWAPF  f,d
オペランド f:レジスタアドレス(00〜7FH)
d:結果格納先(0 または 1)
実効内容 (f<3:0>) → (f<7:4>)
(f<7:4>) → (f<3:0>)
f レジスタの内容の上位と下位 4 ビットの入れ替えを行い,結果を d=0 なら Wreg に,d=1 なら f レジスタに上書きする.
影響フラグ なし
実効サイクル 1
 
■GOTO (go to) 指定番地にジャンプする
書 式 [ラベル]  GOTO  k
オペランド k:リテラルデータ(000〜7FFH)
実効内容 k → PC<10:0>
(PCLATH<4:3>) → PC<12:11>
無条件で指定番地へジャンプする.11 bit のリテラルアドレスを PC レジスタに上書きし,さらに PC の上位に PCLATH を上書きすることでジャンプする.
影響フラグ なし
実効サイクル 2
 
■CALL (call subroutine) サブルーチンにジャンプすプする
書 式 [ラベル]  CALL  k
オペランド k:リテラルデータ(000〜7FFH)
実効内容 (PC) + 1 → スタック
k → PC<10:0>
(PCLATH<4:3>) → PC<12:11>
サブルーチンをコールする.
戻り番地(PC+1)をスタックに格納後,11 bit のリテラルアドレスを PC レジスタに上書きし,さらにPC の上位に PCLATHを 上書きすることでジャンプする.
影響フラグ なし
実効サイクル 2
 
■RETURN (return from subroutine) サブルーチンから復帰する
書 式 [ラベル]  RETURN
オペランド なし
実効内容 スタック → (PC)
サブルーチンから無条件復帰する.
スタックに格納されていた戻り番地を PC レジスタに上書きすることでジャンプする.
影響フラグ なし
実効サイクル 2
 
■RETFIE (return from interruput) 割り込みから復帰する
書 式 [ラベル]  RETFIE
オペランド なし
実効内容 スタック → (PC)
1 → GIE
割り込み処理から復帰する.
スタックに格納されていた戻り番地を PC レジスタに上書きすることでジャンプし,同時に,グローバル割り込み許可ビットである GIE に 1 をセットして割り込みを許可する.
影響フラグ なし
実効サイクル 2
 
■RETLW (return with literal in W) リテラルデータを Wreg にセットして復帰する
書 式 [ラベル]  RETLW  k
オペランド k:リテラルデータ(00〜7FH)
実効内容 k → (Wreg)
スタック → (PC)
Wreg にリテラルデータを設定し,サブルーチンから復帰する.
8 bit のリテラルデータを Wreg へ設定後,スタックに格納されていた戻り番地を PC レジスタに上書きすることでジャンプする.
影響フラグ なし
実効サイクル 2
 
■CLRWDT (clear watchdog timer) ウォッチドッグタイマのリセット
書 式 [ラベル]  CLRWDT
オペランド なし
実効内容 0 → (WDT prescaler)
1 → TO
1 → PD
ウォッチドッグタイマをリセットし,さらに連動するプリスケーラもゼロクリアする.
影響フラグ 《TO,PD》
TO=1
PD=1
実効サイクル 1
 
■NOP (no operation) 次の命令へ進む
書 式 [ラベル]  NOP
オペランド なし
実効内容 なし
何もせずに次の命令に進む.
タイマ処理時間を調整する場合等に使用する.
影響フラグ なし
実効サイクル 1
 
SLEEP (sleep) スリープモードにする
書 式 [ラベル]  SLEEP
オペランド なし
実効内容 0 → PD
1 → TO
0 → (WDT prescaler)
パワーダウンステータスビット(PD)をリセットし,タイムアウトステータスビット(TO)をセットする.
さらにウォッチドッグタイマをリセット後,オシレータを停止させてプロセッサをスリープモードにする.
影響フラグ TO,PD
TO=1
PD=0
実効サイクル 1