MYCPU80でCP/Mを!
超巨大基板の8080互換HCMOS・CPUでCP/Mを走らせてしまおうという、なんとも狂気なプロジェクトです!
[第36回]
●前回の続きです
前回は2進の浮動小数点数値について簡単に説明しました。
指数部1バイト+仮数部3バイトで実数あらわすというルールについてでした。
しかしこれはそのようにしましょうという単なる約束ごとですから、そうしなければならないというものではありません。
仮数部が4バイトでもいいし、もっと多くのバイト数でも構いません。
私は仮数部が23ビットというのは妥当なサイズだと思ってそのようにしています。
223=8388608ですから23ビットで表すことのできる最大の桁数は6桁〜7桁です。
有効桁数が6桁〜7桁あればまあまあ使えるのではないでしょうか。
それでは足りないという場合のためにZB3BASICでは倍精度浮動小数点演算の機能があります。
ところでなぜ24ビットではなくて23ビットなのかと疑問に思われるかもしれません。
前回の説明でも仮数部の最上位ビットは0でした。
実はこの最上位ビットは8ビットの符号付数と同じ考え方で符号ビットとして使います。
8ビットの数を符号付の数として扱うときは、正の数は00〜7Fで負の数はFF〜80です。
00−01=FFになりますからFF=−1です。
であると同時に11111111の最上位ビットの1は負号としても使われています。
それと同じで仮数部の最上位ビット=1はその数が負数であることを示しています。
ただ実際の演算をおこなうときに、ここに1があると邪魔なので、浮動小数点演算に入るときに、その符号ビットの値はそのための記憶バッファに入れておいて、仮数部の最上位ビットは0にします。
このような説明をしていますと、実数をそのように配置すると、CPUが勝手に浮動小数点計算をやってくれるのか、と誤解される方がいらっしゃるかもしれません。
いえ。
それはないです。
それは浮動小数点計算を8080やZ80や8086でやるための約束事として取り決めをしただけで、そのようにしたら勝手にCPUが計算してくれる、というような都合のよいものではありません。
8080には8ビットの整数加減算と符号無し16ビットの整数加算機能しかありません。
その機能を駆使して浮動小数点計算をプログラムするのです。
とてもとても勝手にやってくれるというような簡単なものではありません。
こつこつと地道に8ビット整数の加減算命令を使って浮動小数点演算をするためのプログラムを書かねば、そのような計算はやってくれませんです。
なかなかに大変なのです。
余計なことばかり書いておりましたら、また時間がなくなってしまいました。
ほんの少し書いただけですが、本日はここまでにいたします。
MYCPU80でCP/Mを![第36回]
2014.9.12upload
前へ
次へ
ホームページトップへ戻る