16位数据如何存储在Intel 8086 CPU的20位地址中?

时间:2018-09-22 07:21:34

标签: intel x86-16 16-bit microprocessors

Intel 8086中,我们有 20位地址总线,因此我们有 2 ^(20)个位置。
我对这 16位数据如何存储在 20位地址中感到困惑。

示例:

如果我想将2存储在 first 内存位置,那么我的地址将是
00000000000000000001 20位)并且其中的数据将为:
00000000000000010 16位)。

是这种方式还是我缺少什么?

谢谢。

1 个答案:

答案 0 :(得分:3)

每个20位物理地址插槽都保存一个8位字节。一个16位字占用2个连续的地址槽。

物理地址(最初为8086)为20位宽,数据为(最多)16位宽。

8086实际上确实具有16位数据总线,而8088具有8位数据总线,并花费了2个周期来传输一个字,但芯片的其余大部分与8086相同,直到晶体管布局

地址宽度和数据宽度不必以任何特定方式关联。


您不将20位线性地址作为数据存储在内存中。存储在内存中的指针通常是32位segment:offset对。

您可以通过规范化段值将指针压缩为3个字节,以便仅需要4位偏移量,或者采用任何其他方法来消除由seg<<4 + offset实模式地址引起的某些冗余计算。