2024.2.3
前へ

ホームページトップへ戻る


PICBASICコンパイラ

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
まるでインタプリタ。でもコンパイラです。超カンタン超シンプルです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第136回]



●コマンドの動作確認(8)/PMRD

今回でコマンドの再確認作業はやっと終わりです。
最後のコマンドは/PMRDです。
/PMRDコマンドもPICBASICコンパイラプログラムを開発する過程でデバッグ用に作成したコマンドです。
/PMRDコマンドの本来の機能はPIC18F4550内蔵のフラッシュメモリ(CODE MEMORYスペース)に書き込んだマシン語プログラムコードを読み出してそれが正しく書き込まれているかどうかを確認するための機能です。
その機能は一般のユーザーにとってはおそらく使い道のない機能かと思います。
しかしその機能を利用する形で後から作成した「書き込み済みのプログラム名を読み出す機能」は一般のユーザーにとってもそれなりに役に立つ機能かと思います。
その機能については[第53回]で説明しています。
今回はその説明の補足になります。
ほぼ同じ内容の繰り返しになりますが、私自身の備忘録という意味でもここで簡単に整理しておくことにいたします。

14)/PMRDコマンド

[書式]/PMRD x,y
xは16進数の80から始まる1バイトの数でユーザープログラムエリアを64バイトに区切ったメモリバンクの番号を示します。
ただの番号ですからここは「80」から始めなくても「00」からでも良いのですけれど。
この機能を作った当初は/DMRDコマンドに含めて考えていたため「データエリア」と「プログラムコードエリア」とを区別するためにそのようにしたのでした。
その後にコマンドを/DMRDと/PMRDに分けましたから、それなら「00」から始めてもよい、と実はこの記事を書きながら今そのことに気が付きました。
確かに。
ここは「80」から始めることにそれほど意味はないので「00」から始めればよいところでした。
しかし今からそのように直すとなるとC++プログラムもPICプログラムも変更しなければなりません。
ただでさえ時間がなくて困っていますので、そのように気が付いたことだけを書き記しておくことにしてここはとりあえずはそのままにしておくことにいたします。

説明に戻ります。
yは0または1でxとあわせてユーザープログラムエリアのアドレスを示します。
/PMRDコマンドは1回の実行で32バイトのデータ(プログラムコード)を読み出します。
/DMRDも当初は32バイトの表示でしたが前回書きましたように256バイトを表示するようにプログラムを変更しました。
しかし/PMRDコマンドは/DMRDコマンドと少し仕組みが異なるので簡単には変更できません。
ですので/PMRDコマンドについては32バイト単位での表示のままにすることにしました。
/PMRD 80,0はユーザープログラムエリアにユーザープログラムが書き込まれている場合にそのプログラム名を読み出して表示します。
/PMRD 81,0はユーザープログラムエリアの先頭アドレスから32バイトを読み出して表示します。
/PMRD 81,1はその次の32バイトを読み出して表示します。
以下x,yは82,0、82,1、83,0、83,1というように続きます。
ちょいとわかりにくいですけれどデバッグ専用のコマンドですからここはさわらないことにしておきます。

/PMRD 80,0[Enter]を入力しました。

PIC18F4550にはまだBASICプログラム(マシン語コード)は書かれていないのでプログラム名は表示されなくて「no obj program」と表示されました。

そこでBASICプログラムを書き込んでみることにします。
すでに作成済みのBASICプログラム「bstest03.txt」をロードします。

/LOAD BSTEST03.TXTと入力して

最後に[Enter]を入力しました。

BASICプログラム(ソースプログラム、TXTファイル)をロードすると直ちにコンパイルされてPICアセンブラプログラムに翻訳されたあと続いてマシン語コードに変換されます。

参考までにLISTコマンドでソースプログラムをリスト表示しました(これは必須ではありません)。

ここまでの段階ではまだターゲットのPIC18F4550にはマシン語コードは書き込まれてはいません。
/RUNコマンドを実行するとPIC18F4550にマシン語コードが書き込まれたあと、そのプログラムが実行されます。
/RUNと入力して

それから[Enter]を入力しました。

まだデバッグ中なのでPIC18F4550に書き込むマシン語コードが表示され、続いてプログラム名が送られたあと、PIC18F4550のフラッシュメモリエリアに書き込まれたPICマシン語プログラムが実行されました。
マシン語プログラムが実行された結果
program startedと表示されたあと
abc=55,xyz=58
と表示されました。

そのあと/PMRDコマンドを実行しました。

/PMRD 80,0の実行で書き込み済みのプログラム名が
obj=bstest03
と表示されました。
/PMRD 81,0の実行によってマシン語プログラム(マシン語コード)の先頭(アドレス2040)から32バイトが表示されました。
表示されているマシン語コードについては上の画面のアセンブルリストを参照してください。
次の/PMRD 81,1の実行ではアドレス2060から32バイトが表示されました。
次の/PMRD 82,0の実行ではアドレス2080から32バイトが表示されました。
次の/PMRD 82,1の実行ではアドレス20A0から32バイトが表示されました。

PICBASICコンパイラ[第136回]
2024.2.3 upload

前へ

ホームページトップへ戻る