雑記帳
ここはhideyosiの雑記帳です。テケトーに書き散らしてるだけなので間違っていたりとは普通にしてます。信用度は相当低いことをあらかじめご了承を。またご覧のようにWikiを使ってますが、hideyosi意外は書き込めません。
|
1: 2005-07-21 (木) 15:48:05 |
| + | COLOR(red){多分合ってないぞ!!!。いま一生懸命勉強中だ! (T∀T))間違ってるとこみつけたら、板にツッコミ入れよう!)} |
| | | |
| + | COLOR(red){・・・ふっ・・・ 所詮笑われてナンボじゃい!。 (T∀T) } |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | セグメントとはなんじゃらほい? |
| + | |
| + | 8086CPUは、最大1MBのメモリをアクセスできる。 |
| + | |
| + | (「アクセスできる」とは、逆に言えば、それ以上メモリ装置が搭載されていても、アクセスできないということ) |
| + | |
| + | なぜ???? |
| + | |
| + | メモリの指定には、必ず「番地」を指定しなければいけない。 |
| + | |
| + | この番地の指定に使われるCPU内のレジスタが16bitしかないから。 |
| + | |
| + | 16ビット= 0x0000 〜 0xFFFF まで。十進数に直すと0〜65535。 |
| + | つまり、65,535バイト。あれれれ? たった64KB????? |
| + | |
| + | 8086はたったこれだけのメモリしかアクセスできない!? |
| + | 「素」の理屈から言えばそうなる。これでは少なすぎるので、8086はちょっと変わった方式を採用している。 |
| + | |
| + | メモリアドレスを20ビットで表現できるようになっている。これなら、0x000000〜0xFFFFFF。つまり、16,777,215バイト。1MBとなる。 |
| + | |
| + | しかし、レジスタは16ビット。これでどうやって20ビットを表現するのか? |
| + | |
| + | 「セグメントアドレス」+「オフセット値」でアドレスを表現する。 |
| + | |
| + | セグメントアドレスもやはり16ビットでしか表現できない。で、それ+何番地ずれているかを表現する。 |
| + | |
| + | たとえば、物理的に0x112233番地のメモリにアクセスしたいとする。その場合、レジスタはみな16ビットではあるが、 |
| + | |
| + | セグメントアドレス:1122 |
| + | オフセットアドレス:0033 |
| + | |
| + | これで表現する。 |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | ここで登場するのが、「セグメント」という概念。 |
| + | |
| + | ''模式図的概念'' |
| + | 例えば、「電話番号」に置き換えて考えてみる。我々が住んでいる現世は沢山の家がある。しかし、電話番号にはある制約があって、一回に4桁までしか決められないとする。 |
| + | そうすると、電話番号は9999までしか作れない。日本でたった千件しか電話をもてない。 |
| + | これでは困る。そこで、「局番」というものを導入。局番には、「何処の県か?」という番号が振られている。だから、いままでは、2845という電話番号は、「日本全国の中の、2845番のお宅」という状態だったが、局番の導入によって、電話番号は、0012-2845という形になり、「北海道の2845番のお宅」「北九州のの2845番のお宅」という指定ができるようになり、電話番号をたくさん使えるようになった。 |
| + | |
| + | セグメントは、この「局番」に当たる。 |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | *お勉強中 [#ncdea12a] |
| + | 合ってないと思う。勉強中 |