2024.9.14
前へ
次へ
ホームページトップへ戻る


PICBASICコンパイラ

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

[第147回]



●PICBASICコンパイラの文法(8)変数(8)R変数(6)

また一週間以上間があいてしまいました。
納期がせまった注文の仕上げに追われてとてもHPの更新にまで手がまわりませんでした。
それと前回書いたことに間違いがあったことに気付いてそのウラを取るのに手間取ったことやさらにそこにプログラムのバグが関係したことでとてもHPを書ける状況ではありませんでした。
今やっと落ち着いて少しほっとしているところです。

前回はR()の動作テストをするためにRH=02、RLに00〜7Fを入れてレジスタバンクの前半128バイトにアクセスするプログラムを作って実行してみました。
なぜ前半かという説明として80〜FFは負数になってしまうからという説明を書きました。
そのように書いたのですが、頭のどこかにちょいとひっかかるものが残っていました。
実は。
PICBASICコンパイラでは負数はありませんでした。
私の思い違いでした。
PICはもともとI/Oのコントロールなどをするのが主目的のICです。
そこに負数はなじみません。
扱える数の大きさが16bitならばともかくとして8bitで負数を扱おうとすると上記のように256までしかない数を半分に割って負数に割り当てなくてはなりません。
そこまでして負数を扱うことにそれほどメリットはありません。
そう考えてとりあえずは数としては0〜255までの0と正の数のみを扱うとしたはずのことをすっかり忘れてしまっていました。
半年前なら覚えちゃいるが、という歌がありましたが悲しいことに半年どころかもう一ヶ月も前のことになるときれいさっぱり忘れてしまいます。
ということで前回の説明は横線で抹消しました。
あらためてテストのやり直しです。
今回もまずは結果からです。

実行結果を先に表示するのは結果をまず確かめたいからです。
先にLISTを表示しても結果がアウトだったりすると無駄作業になってしまいます。
早い話が手抜きです。
前回は00〜7Fでしたが今回は00〜FEが表示されています。
下がプログラムリストです。

なんだ。
結果と一緒にプログラムリストも表示できてしまいました。
やっていることは基本的には前回のプログラムと同じです。
プログラムの前半でレジスタバンク02のアドレス00〜FEにそのアドレスを示す値を書き込んだあと後半でそれを読み出しました。
ここでなぜ0〜255ではなくて0〜254なのかというところがプログラムのポイントです。
FOR〜NEXT文はNEXTのところで値を確認します。
FOR RL=0 TO 255
にするとNEXTのところで値が255よりも大きくなったらFOR〜NEXTを抜けます。
それは256なのですが。
8bitでは表現できません。
00になってしまいます。
ですから8bitの場合FOR〜NEXTで置ける数は最大254になります。
それでは最後の255はどうしようもないのか、ということになるのですがそこは工夫次第ということになります。
FOR〜NEXTでは駄目なのですがIF文ならなんとかできそうです。
とりあえずのIFを使ったテストです。

最後のFFまで表示できました。
下はそのプログラムリストです。

とりあえずIF文で255(FF)まで扱えることを軽くテストしてみました。
これができたのでこれをそのままR()に使えばよいと思います。
それは次回にて。

PICBASICコンパイラ[第147回]
2024.9.14 upload

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