Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。296件2これを読んでいると、以下の文がありました。https://ja.wikipedia.org/wiki/Intel_8086演算用のアドレスレジスタのほかに、セグメントレジスタという、アドレス変換のための16ビットのレジスタを持っていることである。実際にCPUがアクセスするアドレスは、16ビット幅のレジスタによって指定された64KBのアドレスに、さらに16ビット幅のセグメントレジスタの値を16倍(左に4ビットシフト)して加算したアドレスとするため、1MBのメモリ空間を利用できた。これは、セグメントレジスタ:0x0000アドレスレジスタ:0x00ffと、セグメントレジスタ:0x000fアドレスレジスタ:0x000fは同じ場所を示すということでしょうか。して、なんのためにそのような仕様にしたのでしょうか。メモリ空間を64KBから1MBに増やすことが目的なら、セグメントレジスタの幅を4bitにすればいいのではないのでしょうか。すれば、セグメントレジスタ+アドレスレジスタで20bit、つまり1MBを表現できるわけですし。等で困ってしまいます。一つ理由を挙げるなら物理アドレスの表記方法が複数あるほうがソフトウエアの実装に便利だから。場合セグメントレジスタの値を、コピー元で1回、コピー先で1回、違うタイミングで変更する必要がある。セグメントレジスタを更新するとオフセットは計算しなおし。正規化してから開始すると途中でセグメントレジスタを更新しなくてよい。正規化すると1オブジェクトの処理中にセグメントレジスタを更新しなくてよいというのはソフトウエア実装側としては楽できます(=高速)。超過すると、処理中に必ずセグメントレジスタの更新が必要で超絶遅くなります。シリーズなんかがそうですね。なんて名前が付けてありますが実装は全く異なるです。超えるようなデータを扱うことはまれという設計思想でそうなっています。|18086は16ビットCPUなので、レジスタはみんな16ビットですで、セグメントレジスタは16ビット必要だからその幅、ということになります。|1他の回答者の皆さんがおっしゃっている通り、不便だったり回路が複雑になったりで、4bitにするのは一顧だにされなかったというのが正しそうです。セグメントレジスタのサイズを変更することを検討したとしても、メモリの有効活用の点から、4bitにすることは決してなかったでしょう。