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两倍的地址?

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位。
从英特尔 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)
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |