我知道它使用物理地址 = 段寄存器 << 4 + 偏移寄存器。虽然这两个寄存器都是 16 位的,但是 8086 怎么能处理一个 20 位的加运算呢?
问问题
2409 次
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 回答