超ローコストPICWRITERの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
「PICBASICコンパイラ」からスピンオフ!!
過去記事を参照することなどを考えて該当する過去記事は「PICBASICコンパイラ」のまま連載回もそのままとします。
以後は前回記事からの流れで[第236回]からとします。
「PICBASICコンパイラ」はなるべく早く連載を再開したいと考えています。
PICはローコスト、高機能で種類も豊富なお手軽マイコンですがプログラムを書き込むためのWRITERが必要です。
それをできるだけ安価に作ってしまおうというプロジェクトです。
最終的には製品化を考えています(組立キット、完成品)。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第324回]
●PIC18アセンブラ(3)BR命令(2)
毎日暑いですねえ。
このところの暑さは尋常ではありません。
ちょいと外に出たりするともうサウナ状態で熱波にやられてしまいそうです。
とてもクーラー無しでは過ごせません。
幸い私の仕事は室内での作業ですのでクーラーさえあれば快適な環境です。
クーラーの利いた部屋でまるっと一日作業したおかげでBR命令にラベル機能を付加することができました。
その成果を見ていただくためにまずは前回の画像を再掲してから今回の作業の結果をお見せすることにします。
下はPIC18F2450用のプログラムをMPLABでアセンブルした結果作成されたリストファイルの一部です。
501行アドレス2B6にBZがあります。
looptop1へのジャンプ命令です。
ジャンプする移動距離はワード単位で計算します。
前回説明しましたので計算の詳細は省きます。
計算の結果は−2です。
8ビットの符号付き数として−2を示すとFEになります。
bz looptop1のマシン語コードを見るとFEがあります。
511行アドレス2C6にはBC命令があります。
bc comreadです。
comreadへのジャンプを計算すると+2になります。
bc comreadのマシン語コードを見ると02があります。
下は上と同じソースプログラムをPIC18アセンブラ用に一部を書き直してそれをPIC18アセンブラにかけた結果出力されたリストファイルの一部です。
ラベルを使わないで$+、$−で表記するとこうなります。
$による表記はマシン語コードレベルで考えることになりますからマイナスで計算する場合とか間にGOTOのように2ワード(32ビット、4バイト)の命令が入ってくるとほぼお手上げになってしまいます。
ということでたっぷり一日をかけてMPLAB版と同じようにlabel対応にしました。
勿論$+、$−でもできますがラベル対応が可能になったからにはもう$+、$−を使うことはありませんでしょう。
下はそのように機能を変更したあとでPIC18アセンブラを実行した結果です。
上2つの画像と見比べてみてください。
実はラベル対応にしたほかにも行なった作業があります。
聡明な読者様ならば前回と今回の画像を見比べていただければおそらくはその相違に気付かれるでありましょう。
次回はそのことについて説明をいたします。
超ローコストPICWRITERの製作[第324回]
2025.8.22 upload
前へ
ホームページトップへ戻る