【发布时间】:2020-06-13 09:50:03
【问题描述】:
早期,内存大小很小 (64 KiB),只需要一个 16 位寄存器来寻址它。但是后来出现了 1 MiB 的内存。所以我们需要更大的地址寄存器。但在 8086 CPU 中,他们使用了另一个寄存器,并将其称为偏移量。
因此,使用 16 位主寄存器,我们可以寻址 65536 个段,而使用 16 位偏移量,我们可以寻址这些段中的 65536 个字节,所以我们可以寻址的整个内存应该是 65536 * 65536,这意味着我们可以寻址 4 GiB地址。
但在 8086 上,我们可以使用 32 位远指针(16 位段 + 16 位偏移)寻址 1 MiB。这是为什么呢?
【问题讨论】:
-
片段重叠!
-
你的意思是我们可以用多种方式解决一个位。这意味着我们可以通过 3855 种方式添加一些内容
-
实际上有 4096 种方式。 (您的问题中似乎有很多数字和其他拼写错误。)例如,seg:ofs 地址
12AB:34CD和12AC:34BD都指的是同一字节,位于线性地址15F7D。
标签: x86-16 real-mode addressing-mode memory-segmentation