329590224@qq.co 发表于 2013-8-18 15:38:19

多个段地址与偏移地址都是指向一个物理地址,那么为什么不直接寻物理地址呢?

物理地址容量只有64KB 那么你无论怎么变段地址与偏移地址他的物理地址容量不还是那么多么?就像一个杯子容量是500ML把他变成1000ML这是什么逻辑啊?这个问题一直很朦胧;求解?

牡丹花下死做鬼 发表于 2013-8-18 16:18:26

应为物理地址是20位
寄存器是16位啊

329590224@qq.co 发表于 2013-8-18 16:31:25

这个物理地址是怎么算出来的啊?

sqhs008 发表于 2013-8-18 16:46:28

王爽老师的书基础知识讲的很清楚了

duokusan 发表于 2013-8-18 19:03:46

看汇编语言,我也不懂。

329590224@qq.co 发表于 2013-8-18 21:06:11

王爽老师的家到学校的比喻,那是说先有物理地址后再有段地址与偏移地址;但是看了很多人的回复感觉就是先有段地址与偏移地址然后再有物理地址;求解

329590224@qq.co 发表于 2013-8-18 21:14:25

最看不惯那种自以为很懂,却说不出个所以然来的人;

Dardy 发表于 2013-8-18 22:48:43

本帖最后由 Dardy 于 2013-8-18 22:49 编辑

地址需运算如对地址的加减运算,这些运算又需要寄存器的叁与如存放加数结果,地址是20位寄存器是16位,一个地址至少需要两个寄存存放,所以把一个地址拆分为两部分是必须的。精心设计了这种拆分方式,基址和偏移地址,符合我们的理解和使用

sqhs008 发表于 2013-8-18 23:04:38

段地址,物理地址这里讲的比较详细了
http://bbs.fishc.com/thread-35811-1-1.html

最后说明一点:最看不惯论坛上有些伸手党,就跟孙子似的,比如说上面的7楼。别人有义务还是拿了你多少钱吗。一定要为你服务???你丫不是说了看不惯那种自以为很懂,却说不出个所以然来的人;我看你就是懒种一个,论坛强大的搜索功能,你个SB不去用。你还着别人把饭咀嚼好。亲自吐到你嘴中吃吗?

329590224@qq.co 发表于 2013-8-18 23:15:37

呵呵终于知道是说你了哦!有点自知知明

牡丹花下死做鬼 发表于 2013-8-19 07:40:37

329590224@qq.co 发表于 2013-8-18 16:31 static/image/common/back.gif
这个物理地址是怎么算出来的啊?

物理地址 = 段地址*16+偏移地址

仰望天上的光 发表于 2013-8-19 08:38:08

是这样的:首先。因为8086的数据总线只有16位,所以它的几乎所有寄存器都是16位。于是,这就涉及到了一个严重的问题:“我们要用多少个寄存器来保存地址?”
显然,我们第一次尝试使用1个寄存器来保存地址,也就是用16个2进制位来保存地址,但是这样只能保存64KB大小的地址空间。但是8086的地址总线是20根,可以有1MB的地址。我们不能浪费剩下的地址空间不用。
于是,我们产生了一个朴实无华的想法:一个寄存器不够的话,就用两个。但两个寄存器总共有32位,可以寻址4GB的空间,但实际上能用的只有1MB。
接着思考的就是:在这种情况下,肯定有很多的地址表示是重复的,也就是说同一个20位的物理地址可以对应多种不同的32位表示。问题在于:这种硬把32位地址转换为20位地址的方法有很多,我们要选择哪一种方法呢?其实随便你选择哪种都可以,不过这个问题答案的关键不在于你如何选择,而在于8086CPU的设计者如何选择。
接下来的事情你已经知道了,8086的设计者为了让人觉得他们的做法“比较明智”,硬是搞了段地址和偏移地址的概念。当然,有概念比没有概念要好,因为有概念,你可以根据概念由段地址和偏移地址自己计算出物理地址;没有概念的话,你基本就要像查ascii表那样查一张很大的表。
整个故事就是这样的。

329590224@qq.co 发表于 2013-8-19 22:07:40

谢谢仰望天上的光;讲解的非常透彻;如果小甲鱼把你这段解释放到视频当中;学习者会理解的很快!非常感谢

贝壳头 发表于 2013-8-20 10:03:14

讨论的好激烈啊!!!
页: [1]
查看完整版本: 多个段地址与偏移地址都是指向一个物理地址,那么为什么不直接寻物理地址呢?