RRP1320-1-03 は減算タイマーの処理で DECF を使っていますが、2byte 以上のデータを扱うとボロー(桁下がり)の処理が必須にです。 引き算 SUBWF では上位 byte の引き算に SUBFWB を使ってボロー(Cの反転)を引き算しますが、DECF でも同様にキャリーフラグが動作するのか調べてみましたが納得できる資料が見当たらないので実験で確かめることにしました。 <PICデバイス=18F1320>


下図をソースに書き足し、行番号の右隣で灰色の部分をダブルクリックして、ブレークポイントを設定します。

DECF_Break


Run して、ブレークポイントで止まった所で、下図のように Watch ウィンドウで DECF 後の値と、STATUS レジスターの中を表示させます。

DECF_Break_STATUS


プログラムを書き換えて DECF 処理前の値毎に記録したのが下表です。 ついでですから、N , OV , Z , DC , C と言った全てのステータスフラグについて記録しました。

 N     演算結果が負を示すネガティブフラグ
 OV  符号付き演算のオーバーフローフラグ(7bit を超えると1)
 Z     演算結果が0を示すゼロフラグ
 DC  演算結果が下位 4bit からのオーバーフローを示すデジットキャリーフラグ
 C     演算結果が 8bit からのオーバーフローを示すキャリーフラグ

DECF_結果

やはり、DECF 直後にキャリーフラグの反転をボローとして扱えるようです。 DC の反転も上位 4bit からのボローとして機能しています。 何ごとも自分で確かめれば自信を持って先に進めます。


18F ニーモニックと小技のインデックスはこちら → 18F: テーブル・ジャンプ 


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。