【发布时间】:2020-02-24 03:32:03
【问题描述】:
在8086微处理器中,假设CS为FFFFH,IP为FAB0H 然后通过将 CS 乘以 16 并加上 IP 来计算物理内存地址。 IE。 添加 = FFFF0 + FAB0 这个总和会产生溢出,因为总和不能存储在 20 位中。 会发生什么?
【问题讨论】:
-
加法器只有16位,进位被丢弃。所以它最终“包装”了 mod 2^20
-
克里斯是正确的。作为附录,与您的问题无关 - 在 80286(或更高版本的处理器)上有超过 20 条地址线(80286 上有 24 条,80386+ 上有 32 条或更多) .在禁用 A20 线(地址位 20 始终设置为 0)的 80286+ 上,它像 8086 处理器一样包装。启用 A20 后就没有回绕,您可以寻址 1MiB 标记上方的 64KiB-16 字节。因此 FFFF:FFFF (最高段:偏移地址)将在启用 A20 的情况下在 80286+ 上引用物理地址 (FFFF
标签: x86 intel x86-16 memory-address real-mode