【記号説明】
下記説明で使用している記号、略号の意味は下記による。
記号 |
意味内容 |
記号 |
意味内容 |
f |
レジスタのアドレス |
Wreg |
ワーキングレジスタ |
b |
ビットのアドレス(0-7) |
k |
リテラルデータ(1byte) |
x |
Don't care(0にしておく) |
d |
格納先指定(0 or 1) |
label |
ラベル名 |
PC |
プログラムカウンタ |
dest |
dと同じ意味 |
|
|
[ ] |
省略可能 |
( ) |
内容 |
< > |
レジスタビット位置 |
|
書式 [label] ADDWF f,d
オペランド f:レジスタアドレス(00〜127)
d:格納先(0または1)
実行内容 (Wreg) + ( f ) → (dest)
影響フラグ C、DC、Z
サイクル 1サイクル
機械語 0 0 0 1 1 1 d f f f f f f f
実行内容 Wregの内容にfレジスタの内容を加算し、
結果を d=0ならWregに d=1ならfレジスタ
に上書きする。
【ANDWF】 Wregとf レジスタとの論理AND演算
書式 [label] ANDWF f,d
オペランド f:レジスタアドレス(00〜127)
d:格納先(0または1)
実行内容 (Wreg) .AND. ( f ) → (dest)
影響フラグ Z
サイクル 1サイクル
機械語 0 0 0 1 0 1 d f f f f f f f
実行内容 Wregの内容とfレジスタの内容との論理
AND演算をし、結果を d=0ならWregに
d=1ならfレジスタに上書きする。
【CLRF】 f レジスタをゼロクリアする
書式 [label] CLRF f
オペランド f:レジスタアドレス(00〜127)
実行内容 00H → ( f )
影響フラグ 1 → Z
サイクル 1サイクル
機械語 0 0 0 0 0 1 1 f f f f f f f
実行内容 fレジスタの内容をゼロでクリアし、
Zフラグをセットする。
【CLRW】 Wreg をゼロクリアする
書式 [label] CLRW
オペランド 無し
実行内容 00H → ( Wreg )
影響フラグ 1 → Z
サイクル 1サイクル
機械語 0 0 0 0 0 1 0 0 0 0 0 0 1 1
実行内容 Wregレジスタの内容をゼロでクリアし、
Zフラグをセットする。
【COMF】 f レジスタの補数の演算
書式 [label] COMF f,d
オペランド f:レジスタアドレス(00〜127)
d:格納先(0または1)
実行内容 complement ( f ) → (dest)
影響フラグ Z
サイクル 1サイクル
機械語 0 0 1 0 0 1 d f f f f f f f
実行内容 fレジスタの内容の補数を演算し、
結果を d=0ならWregに d=1ならfレジスタ
に上書きする。
【DECF】 f レジスタのカウントダウン
書式 [label] DECF f,d
オペランド f:レジスタアドレス(00〜127)
d:格納先(0または1)
実行内容 ( f )−1 → (dest)
影響フラグ Z
サイクル 1サイクル
機械語 0 0 0 0 1 1 d f f f f f f f
実行内容 fレジスタの内容から1を減算し、
結果を d=0ならWregに d=1ならfレジスタ
に上書きする。
【DECFSZ】 f レジスタの減算をし結果が0ならスキップ
書式 [label] DECFSZ f,d
オペランド f:レジスタアドレス(00〜127)
d:格納先(0または1)
実行内容 ( f )−1 → (dest); skip if result=0
影響フラグ 無し
サイクル 1サイクル、スキップするときは2サイクル
機械語 0 0 1 0 1 1 d f f f f f f f
実行内容 fレジスタの内容から1を減算し、結果を
d=0ならWregに d=1ならfレジスタに上書
きする。またもし結果が0であったら、次の
命令をNOPに変えて実行する。(スキップ)
従ってスキップ時は2サイクル命令になる。
【INCF】 f レジスタのカウントアップ
書式 [label] INCF f,d
オペランド f:レジスタアドレス(00〜127)
d:格納先(0または1)
実行内容 ( f )+1 → (dest)
影響フラグ Z
サイクル 1サイクル
機械語 0 0 1 0 1 0 d f f f f f f f
実行内容 fレジスタの内容に1を加算し、結果を
d=0ならWregに d=1ならfレジスタに上書
きする。
【INCFSZ】 f レジスタの加算をし結果が0ならスキップ
書式 [label] INCFSZ f,d
オペランド f:レジスタアドレス(00〜127)
d:格納先(0または1)
実行内容 ( f )+1 → (dest); skip if result=0
影響フラグ 無し
サイクル 1サイクル、スキップするときは2サイクル
機械語 0 0 1 1 1 1 d f f f f f f f
実行内容 fレジスタの内容に1を加算し、結果を
d=0ならWregに d=1ならfレジスタに上書
きする。またもし結果が0であったら、次の
命令をNOPに変えて実行する。(スキップ)
従ってスキップ時は2サイクル命令になる。
【IORWF】 Wregとf レジスタとの論理和演算
書式 [label] IORWF f,d
オペランド f:レジスタアドレス(00〜127)
d:格納先(0または1)
実行内容 (Wreg) .OR. ( f ) → (dest)
影響フラグ invert Z
サイクル 1サイクル
機械語 0 0 0 1 0 0 d f f f f f f f
実行内容 Wregの内容とfレジスタの内容との論理和
演算をし、結果を d=0ならWregに d=1なら
f レジスタに上書きする。
【MOVF】 f レジスタの移動
書式 [label] MOVF f,d
オペランド f:レジスタアドレス(00〜127)
d:格納先(0または1)
実行内容 ( f ) → (dest)
影響フラグ Z
サイクル 1サイクル
機械語 0 0 1 0 0 0 d f f f f f f f
実行内容 fレジスタの内容をdestに移動する。即ち
d=0ならWregに d=1ならfレジスタに上書き
する。
【MOVWF】 Wregをf レジスタに移動
書式 [label] MOVWF f
オペランド f:レジスタアドレス(00〜127)
実行内容 (Wreg) → ( f )
影響フラグ 無し
サイクル 1サイクル
機械語 0 0 0 0 0 0 1 f f f f f f f
実行内容 Wregの内容を f レジスタに移動する。
【NOP】 何もしないで次へ進む
書式 [label] NOP
オペランド f:レジスタアドレス(00〜127)
実行内容 無し
影響フラグ 無し
サイクル 1サイクル
機械語 0 0 0 0 0 0 0 x x 0 0 0 0 0
実行内容 何もせず次へ進む。
【RLF】 f レジスタの内容をキャリを含めて左回転
書式 [label] RLF f,d
オペランド f:レジスタアドレス(00〜127)
d:格納先(0または1)
実行内容 f<n> → d<n+1> (nは0から6)
f<7> → C、 C → d<0>
影響フラグ C
サイクル 1サイクル
機械語 0 0 1 1 0 1 d f f f f f f f
実行内容 fレジスタの内容を1ビットキャリも含めて
左に移動する。その結果を d=0ならWregに
d=1ならfレジスタに上書きする。
【RRF】 f レジスタの内容をキャリを含めて右回転
書式 [label] RrF f,d
オペランド f:レジスタアドレス(00〜127)
d:格納先(0または1)
実行内容 f<n> → d<n-1> (nは0から6)
f<0> → C、 C → d<7>
影響フラグ C
サイクル 1サイクル
機械語 0 0 1 1 0 0 d f f f f f f f
実行内容 fレジスタの内容を1ビットキャリも含めて
右に移動する。その結果を d=0ならWregに
d=1ならfレジスタに上書きする。
【SUBWF】 Wregとf レジスタとの減算
書式 [label] SUBWF f,d
オペランド f:レジスタアドレス(00〜127)
d:格納先(0または1)
実行内容 ( f ) − (Wreg) → (dest)
影響フラグ C、DC、Z
サイクル 1サイクル
機械語 0 0 0 0 1 0 d f f f f f f f
実行内容 fレジスタの内容にWregの2の補数を加算し、
結果を d=0ならWregに d=1ならfレジスタ
に上書きする。
【SWAPF】 f レジスタの上位下位入れ替え
書式 [label] SWAPF f,d
オペランド f:レジスタアドレス(00〜127)
d:格納先(0または1)
実行内容 ( f<3:0>) → ( f<7:4>)
( f<7:4>) → ( F<3:0>)
影響フラグ 無し
サイクル 1サイクル
機械語 0 0 1 1 1 0 d f f f f f f f
実行内容 fレジスタの内容の上位と下位4ビットの
入れ替えを行い、結果を d=0ならWregに
d=1ならfレジスタに上書きする。
【XORWF】 Wregとf レジスタとの排他論理和演算
書式 [label] XORWF f,d
オペランド f:レジスタアドレス(00〜127)
d:格納先(0または1)
実行内容 (Wreg).XOR.( f ) → (dest)
影響フラグ Z
サイクル 1サイクル
機械語 0 0 0 1 1 0 d f f f f f f f
実行内容 Wregの内容とf レジスタの内容の排他論理
和を演算し、結果を d=0ならWregに d=1なら
f レジスタに上書きする。