雑記帳
ここはhideyosiの雑記帳です。テケトーに書き散らしてるだけなので間違っていたりとは普通にしてます。信用度は相当低いことをあらかじめご了承を。またご覧のようにWikiを使ってますが、hideyosi意外は書き込めません。
1: 2005-07-21 (木) 15:48:05 ソース バックアップ No.1 を復元して編集
Line 1: Line 1:
 +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]
 +合ってないと思う。勉強中