今日はメモリ構成をやりました!
その前に
2の補数表示というものの説明をしたいと思います。
よくプログラムを組んでいると、扱える数値の範囲というのがあると
思います。
例えば、-32768 〜 +32767 までの数値を扱えますよというもの。
普通に暗記されている方が多いと思いますが、
ちょっと待ってください!!
今まで書いてきた2進数の知識では、マイナスを扱えません!!
そこで登場するのが2の補数です。
簡単な例をごらんください。
2進数 10進数
-------------------------------------------------------------------------
1000000000000000 -32768
1000000000000001 -32767
1111111110000000 -128
1111111110000001 -127
1111111111111111 -1
マイナスは一番左のビットが1となっています。
ちなみに
2進数 10進数
0111111111111111 32767
プラスは一番左のビットが0です。
そういうものと覚えていただくのが早いですね〜。
メモリについてですが、
64Kバイトあるということは、0H番地〜FFFFH(65535)番地まであるということです。
(Hは16進数の意味)
実際には64K中、32KバイトはMSX-BASICのインタプリタROMが入っています。
(インタプリタはその都度、マシン語に翻訳するとでも思ってください。そのつど
翻訳しているからBASICは遅い;)
32Kマシンにも、実際には64Kメモリがあって半分はBASICインタプリタに
占領されているなんてはじめてしりました!
MSXの32Kマシンだと
アドレス
-----------------------------------------------------
0000 |
| BASIC インタプリタ (32K)
|
7FFF |
-----------------------------------------------------
8000 |
| RAM( 32 K )
|
FFFF |
------------------------------------------------------
こんな構造になっているようです。
驚くべきことに、64Kマシンは、32KのBASICインタプリタを切り替えて
実際のプログラムが動くようにしているということらしいです。
つまり、BASICインタプリタをどかして容量を確保しているらしいです。
ということですので、BASICだと32Kマシンと同じ分しかプログラムが走らない
みたいです。
ちなみに16Kマシンはというと
アドレス
-----------------------------------------------------
0000 |
| BASIC インタプリタ (32K)
|
7FFF |
-----------------------------------------------------
| この間はメモリは入っていない
-----------------------------------------------------
C000 | RAM (16K)
FFFF |
------------------------------------------------------
ということらしいです。
今日はこの辺りにしておきます。
では〜
ps より詳しく書きました。こちらもどうぞ^^
次のページ
MSX BASIC + マシン語はこちらへ