鱼C论坛

 找回密码
 立即注册
查看: 1707|回复: 7

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

[复制链接]
发表于 2013-11-27 15:22:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

使用道具 举报

 楼主| 发表于 2013-11-27 15:22:53 | 显示全部楼层
顶下  求指教
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-27 15:40:25 From FishC Mobile | 显示全部楼层
CS:IP,然后还差十个字符限制
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-27 16:23:10 | 显示全部楼层
楼上的兄弟 么看懂什么意思?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-27 17:21:44 | 显示全部楼层
本人也是刚学,如不正确还望高手指正。
一个物理地址确实可以有很多种段地址和偏移地址的组合。这个组合是程序给出的(不是cpu选出来的,是人给的)。
把这个组合给cpu之后 cpu通过地址加法器算出真正的20位物理地址。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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位。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-27 17:50:25 | 显示全部楼层
楼上的大哥 没看清我的问题 我不是问 为什么合成地址 我是问.....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-28 12:46:46 | 显示全部楼层
你问的是 一个物理地址可以有很多种段地址和偏移地址的组合,到底用哪个种组合的问题。
用哪个组合都行 这个是你自己写的程序里给出的。cpu负责把你给出的组合算出最后的结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-28 17:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表