5

我知道它使用物理地址 = 段寄存器 << 4 + 偏移寄存器。虽然这两个寄存器都是 16 位的,但是 8086 怎么能处理一个 20 位的加运算呢?

4

2 回答 2

5

总线接口单元由段寄存器、生成 20 位地址的加法器和指令预取队列组成。一旦这个地址从 BIU 发送出去,指令和数据字节就会从内存中取出并填充一个先进先出的 6 字节队列。

请参阅名为“8086_Internal_Block_diagram_notes.pdf”的文档,可通过 Google 轻松找到。另请参阅本文档,有关总线接口单元的部分。

因此,如果您愿意,处理器会使用专用的内部 20 位寄存器“按需”生成这些 20 位地址。

于 2011-05-04T08:07:45.557 回答
1

当您将 16 位数字向左移动 4 位时,您实际上是在创建一个 20 位数字。然后偏移量指示您将进入该范围的距离。请参阅有关实模式寻址的 Wikipedia 文章

例子:

0x0001  << 4  ->  0x00010  (5 sets of 4 bits in each hex digit -> 20 bits)
于 2011-05-04T08:02:24.607 回答