[邓特曼书第三版]。16位8086如何寻址16倍于8080的内存?

use*_*754 1 x86 assembly memory-segmentation x86-16

邓特曼说8086可以寻址的内存是8080的16倍,并对此进行了详细阐述,为16 * 64K = 1MB。因此,我假设一次使用16位(16位处理器)* 64K,因为16条地址线(2 ^ 16)。但是,通过这种计算逻辑,同样具有16条地址线的8080(8位处理器)是否应该能够寻址8 * 64K = 0.5MB?

那么8086是否应该能够处理8080两倍的地址?

请注意突出显示的句子

swa*_*y p 6

2^20和之间的差是16倍2^16

8080具有16位地址空间,这意味着它可以访问2 ^ 16(65,536)个不同的地址。因此,它可以访问的内存量为65,536 *(每个地址的内存量)。在我们的例子中,每个地址的内存量为1个字节,因此可寻址内存量为65,536 * 1字节= 64KB。

8086具有20位地址空间,这意味着它可以访问2 ^ 20个不同的地址(1MB)

当然1MB / 64KB是16。

注意,处理器的“位”并不总是反映其地址总线的大小。它经常这样做,但在这些情况下不行。

8080是一个8位处理器,但其地址总线为16位宽。同样,8086是16位处理器,但其地址总线为20位。


Ren*_*nat 5

英特尔 8080 ' 维基百科页面:

Address width   16-bit
Run Code Online (Sandbox Code Playgroud)

8086页面:

Address width   20 bits
Run Code Online (Sandbox Code Playgroud)

多 4 行提供 16 倍的地址空间。

为了寻址 1Mb 的内存(20 位)8086 使用的内存分段(实模式),为了获得完整的内存地址,它使用了 2 字节段寄存器和 2 字节偏移量:

segment * 16 + offset
Run Code Online (Sandbox Code Playgroud)