PIC命令一覧(バイト処理命令)


【記号説明】
下記説明で使用している記号、略号の意味は下記による。

記号

意味内容

記号

意味内容

レジスタのアドレス

Wreg

ワーキングレジスタ

b

ビットのアドレス(0-7)

k

リテラルデータ(1byte)

x

Don't care(0にしておく)

d

格納先指定(0 or 1)

label

ラベル名

PC

プログラムカウンタ

dest

dと同じ意味

 

 

[ ]

省略可能

( )

内容

< >

レジスタビット位置

 

 

【バイト処理命令詳細】

【ADDWF】 Wregとf レジスタとの加算

書式     [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
サイクル   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 レジスタに上書きする。


   次のページへ        目次ページへ