cpu如何在实模式下计算20位地址

时间:2011-05-04 07:53:17

标签: x86 memory-address real-mode

我知道它使用物理地址=段寄存器<< 4 +偏移寄存器。 虽然这两个寄存器是16位,8086如何处理20位加法操作?

2 个答案:

答案 0 :(得分:5)

  

总线接口单元由段寄存器,加法器组成,用于生成20位地址和指令预取队列。一旦该地址从BIU发出,指令和数据字节就从存储器中取出,并填充先进先出6字节队列。

查看名为“8086_Internal_Block_diagram_enotes.pdf”的文档,很容易通过Google找到。另请参阅this document,有关总线接口单元的部分。

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

答案 1 :(得分:1)

当您将16位数字向左移动4位时,您实际上是在创建一个20位数字。然后,偏移量表示您将进入该范围的距离。请参阅Wikipedia article on Real mode addressing

示例:

0x0001  << 4  ->  0x00010  (5 sets of 4 bits in each hex digit -> 20 bits)