【问题标题】:Concerning real mode physical memory addressing关于实模式物理内存寻址
【发布时间】:2011-08-05 08:17:54
【问题描述】:

我和我的朋友正在集思广益,讨论一个关于实模式下物理内存寻址的问题,我们无法解决这个问题。来了。

在实模式下,16 乘以段选择器寄存器并添加到偏移寄存器,得到 20 位物理地址。因此,这会导致片段重叠的可能性。

例如"段选择器 -> 0040 & 偏移量 -> 0010" = "段选择器 -> 0030 & 偏移量 -> 0110"

据我们了解,段选择器在添加到偏移量之前会移动 4 位。因此,为了避免这种分段,他们为什么不将分段选择器移动 6(将其乘以 64),然后再将其添加到偏移量。在我们看来,这将消除内存重叠的可能性。

这是否与他们在那段时间面临的任何硬件限制有关,还是仅仅是一个设计决定。

【问题讨论】:

    标签: memory assembly x86 addressing real-mode


    【解决方案1】:

    这是由于设计限制。他们有一个 20 位地址总线,最简单的事情就是让段寄存器选择段落,然后将偏移量添加到它(对于超过 20 位地址总线的部分,它会环绕到内存底部)。

    【讨论】:

    • 没错。请记住,他们试图通过 16 位寄存器达到 1 MB 的内存地址空间(20 位)!!!。实现这一点的最有效方法是使用“分段”,将段基础部分向左“移动”4 位。您指出要不惜一切代价避免的重叠并没有您想象的那么糟糕!考虑到您可以使用该方案定义小段(一些字节长)以及大段(近 64kB 长)。
    【解决方案2】:

    移动 4 为您提供一个整兆字节的地址空间。哇!

    该设计是在 8 位系统配置为 64 kB 时完成的,适合那些有钱购买这么多内存的人。还有一个足够大的盒子来装下所有的内存板。

    这是 16 kB 的样子:http://www.s100computers.com/Hardware%20Folder/CCS/16K%20RAM/16K%20RAM.htm

    如果您要安装 4 MB,则必须先租用另一个房间来存放内存板!

    【讨论】:

    • 现在你可以用我第一个 4MB 配置 RAM 的成本来购买整台计算机并留下资金!
    猜你喜欢
    • 2021-08-24
    • 2011-10-06
    • 2012-05-11
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多