咿咿呀呀 发表于 2013-11-27 15:22:15

汇编 求教关于合成物理地址的疑问

    各位高手好   小弟不才自学王爽老师汇编语言第二版 学到第2章寄存器,有一问题百思不得其解
书上说 内存中物理地址是通过CPU段地址和偏移地址合成的,但是问题在于一个物理地址可以有很
多种段地址和偏移地址的组合,CPU到底是如何从这么多地址中组合挑选出来这一个物理地址,依据
是什么?凭什么就是这个组合 ? 表述不清各位海涵 望大侠们 不吝赐教!多谢

咿咿呀呀 发表于 2013-11-27 15:22:53

顶下求指教

鱼A 发表于 2013-11-27 15:40:25

CS:IP,然后还差十个字符限制

咿咿呀呀 发表于 2013-11-27 16:23:10

楼上的兄弟 么看懂什么意思?

cmwang 发表于 2013-11-27 17:21:44

本人也是刚学,如不正确还望高手指正。
一个物理地址确实可以有很多种段地址和偏移地址的组合。这个组合是程序给出的(不是cpu选出来的,是人给的)。
把这个组合给cpu之后 cpu通过地址加法器算出真正的20位物理地址。

福禄娃娃 发表于 2013-11-27 17:30:00

为什么当时设计的这么麻烦呢
因为当时条件的限制
8086CPU的年代最大的内存也才1M,而由于Intel公司的技术能力,只设计了8086CPU的内部寄存器为16位,因而最大线性寻址空间为64 KB.使用超过64 KB内存空间的程序设计时,需要调整段寄存器(segment registers)。直到32位的80386出现之前,8086的这种段寻址相当不便.
而地址总线为20位,2^20=1MB
16位怎么才能寻址1MB的内存地址,只能变通了,通过CPU内的地址地址加法器合成,两个16位合成一个20位。

咿咿呀呀 发表于 2013-11-27 17:50:25

楼上的大哥 没看清我的问题 我不是问 为什么合成地址 我是问.....

cmwang 发表于 2013-11-28 12:46:46

你问的是 一个物理地址可以有很多种段地址和偏移地址的组合,到底用哪个种组合的问题。
用哪个组合都行 这个是你自己写的程序里给出的。cpu负责把你给出的组合算出最后的结果
页: [1]
查看完整版本: 汇编 求教关于合成物理地址的疑问