1

我了解到物理地址是通过将段地址(16 位)左移 4 次并将其与 16 位偏移地址相加来计算的。8086架构的内存是1M。我的问题是,如果段寄存器和偏移值都是 FFFFH 和 FFFFH,那么结果将大于 FFFFH,即大于 1M。

FFFF0

+ FFFF

----------

10FFEF

它实际上是如何计算的......??

4

2 回答 2

1

它进行模运算,丢弃任何进位。因此,对于一段 FFFF 和 FFFF 的偏移量,您计算 FFFF0 + FFFF = 10FFEF 但它“丢弃”了最初的 1,留下了 0FFEF 的真实答案。

于 2011-07-16T16:43:09.917 回答
1

8086 地址总线只有 20 位宽,它给出的最大高地址为 0xFFFFF = 1,048,575。它的计算方式与您的计算方式相同,但在内存提取中仅使用低 20 位。

于 2011-07-16T16:46:17.467 回答