汇编 求教关于合成物理地址的疑问
各位高手好 小弟不才自学王爽老师汇编语言第二版 学到第2章寄存器,有一问题百思不得其解书上说 内存中物理地址是通过CPU段地址和偏移地址合成的,但是问题在于一个物理地址可以有很
多种段地址和偏移地址的组合,CPU到底是如何从这么多地址中组合挑选出来这一个物理地址,依据
是什么?凭什么就是这个组合 ? 表述不清各位海涵 望大侠们 不吝赐教!多谢
顶下求指教 CS:IP,然后还差十个字符限制 楼上的兄弟 么看懂什么意思?
本人也是刚学,如不正确还望高手指正。
一个物理地址确实可以有很多种段地址和偏移地址的组合。这个组合是程序给出的(不是cpu选出来的,是人给的)。
把这个组合给cpu之后 cpu通过地址加法器算出真正的20位物理地址。 为什么当时设计的这么麻烦呢
因为当时条件的限制
8086CPU的年代最大的内存也才1M,而由于Intel公司的技术能力,只设计了8086CPU的内部寄存器为16位,因而最大线性寻址空间为64 KB.使用超过64 KB内存空间的程序设计时,需要调整段寄存器(segment registers)。直到32位的80386出现之前,8086的这种段寻址相当不便.
而地址总线为20位,2^20=1MB
16位怎么才能寻址1MB的内存地址,只能变通了,通过CPU内的地址地址加法器合成,两个16位合成一个20位。
楼上的大哥 没看清我的问题 我不是问 为什么合成地址 我是问..... 你问的是 一个物理地址可以有很多种段地址和偏移地址的组合,到底用哪个种组合的问题。
用哪个组合都行 这个是你自己写的程序里给出的。cpu负责把你给出的组合算出最后的结果
页:
[1]