8086CPU如何生成物理地址

  8086的CPU是16位的,而8086的地址总线是20位的,如果CPU将地址从内部简单发出,所能达到的寻址范围是216=65535[这里有个理解的错误,65535的单位究竟是B还是b,我一开始的认为是一根数据线每次只能传送一个高电平或者低电平就是一个位b,所以是65535b,转换成KB是8KB,但是书中给出的答案是64KB,这里涉及到的问题是地址总线表示的数字是能够寻址的内存单元,详细解释来自这里]而地址总线220=1MB的内存单元,所以8086采取了一种在CPU内部的一种称为“地址加法器”的方法,用两位16位的数据合成20位的地址达到1MB的寻址能力。它的方法如下


  地址加法器采用的方法是物理地址=段地址*16+偏移地址,其中的段地址*16通常的说法是左移4位,有这样的一个规律,一个数据的二进制形式左移N位,相当于这个数据乘以2的N次方,所以段地址*16也就是相当于段地址左移2的4次方,即左移4位。

  虽然说是段地址,但是内存并没有分段,段只是人为的一种逻辑划分,这种逻辑划分有这样的规律,因为是段地址乘以16定位段的起始地址,所以段的起始地址必然是16的倍数,同时因为偏移地址216所能表示的最大寻址范围是64KB,所以这种逻辑意义上的段地址*16+偏移地址在逻辑划分的段最大也就是64KB。


                                                                            20131207 本文来自于理解王爽的《汇编语言》总结

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据