parbbo 发表于 2011-8-3 11:09:10

关于内存地址深入了解

一直对8086的内存寻址计算有个疑惑:16位段*16让cpu寻址能力增加了98w多个,这些地址都分布在什么地方呢?

parbbo 发表于 2011-8-3 11:23:18

按照16位段*16最大的地址应该是fffff=1048560,哪如果使用ffff0(段)+ffff(偏移)=1114095,很明显1114095>1048560,哪怎么解释5个16进制位无法定位的哪些地址呢?

parbbo 发表于 2011-8-3 11:33:10

自己顶下,希望大家关注!

weixianlang 发表于 2011-8-3 12:23:28

一个操作对象, 在内存中会占用一点的空间, 这个空间位置在内存中的记号,就是这个操作对象的操作地址, 而这个空间所存储的数据, 就是这个操作对象的数据! 所以一个操作对象就有了两个概念, 一个操作地址,一个操作数!

parbbo 发表于 2011-8-3 13:45:24

你答非所闻

zhdw 发表于 2011-8-3 15:22:58

本帖最后由 zhdw 于 2011-8-3 15:23 编辑

cpu寻址能力? 是根据 地址总线   16根地址线寻址能力 2的16次方      地址是在内存上的
   偏移地址16位 范围0-ffffh之间   你的16位段*16这东西怎么出来的

parbbo 发表于 2011-8-3 16:10:18

兄弟,你所说的寻址能力是没有地址加法器之前的结果

zhdw 发表于 2011-8-3 17:46:06

哦    你的问题:地址加法器合成一个 20位   物理地址。。。

parbbo 发表于 2011-8-3 17:47:27

就此意思!

tsembrace 发表于 2011-8-5 17:21:34

“按照16位段*16最大的地址应该是fffff=1048560,哪如果使用ffff0(段)+ffff(偏移)=1114095,很明显1114095>1048560,哪怎么解释5个16进制位无法定位的哪些地址呢?”
按我的理解对拥有20根地址线(即20位)的8086,段地址×16+偏移地址这只是提供了一种可行的寻址方式,以适应8086单次只能处理16位的现状。
A、20位地址线可表示最小地址为0,最大地址为fffffh。
B、而对于“段地址×16+偏移地址”这个数学表达式而言,其可以表达的最大数为(fffffh+ffffh)
需要注意的是上述A和B的区别,B仅为A采用的寻址方式,对于8086而言,当段地址为ffffh时候,其偏移地址只能为0000~000fh,否则将超出其地址线表示范围。
比如若偏移地址为0010h,则按B,ffff0h+10h=100000h,达到了6位(16进制),若用地址线则需要24根才能表示(当然,对于100000h这个实例,21根地址线也可以表示);超出了8086的寻址能力。
简单一些回答你的问题其实就是一句话。。(ffff0H+ffffh)这个地址是不会出现在8086中,当段地址为ffffh时候,偏移地址>0fh的寻址都是无效的。

parbbo 发表于 2011-8-5 18:49:23

你测试过没,不要只说理论哦

tsembrace 发表于 2011-8-5 23:25:15

那你把你的测试拿出来吧,不知道是我的没讲清楚还是我没看懂你的问题~

parbbo 发表于 2011-8-6 00:49:50

ffff*16=ffff0 +ffff是否大于fffff?
外部地址总线20条,那么最大提供fffff个地址标记?
如果是,哪cpu能够找到大于fffff个地址,哪多出来的怎么处理?

??? 发表于 2011-8-7 20:01:01

在网上查了下,如果超出范围就会以虚拟内存的方式来实现。

parbbo 发表于 2011-8-7 20:23:05

要得要得!!

幕府幽魂 发表于 2011-8-8 10:20:08

本帖最后由 幕府幽魂 于 2011-8-8 10:21 编辑

tsembrace 发表于 2011-8-5 17:21 http://bbs.fishc.com/static/image/common/back.gif
“按照16位段*16最大的地址应该是fffff=1048560,哪如果使用ffff0(段)+ffff(偏移)=1114095,很明显1114 ...

同意10楼这个解释
8086CPUDOS下的 内存寻址范围能力最大只有2^20=1048576B=1MB,段地址*16+偏移地址=物理地址的最大范围=1MB。物理地址长度是固定的由硬件决定。而1MB也是8086CPU所能看见的最大范围!

parbbo 发表于 2011-8-8 15:49:53

其实cpu却能看到大于1M的地方
页: [1]
查看完整版本: 关于内存地址深入了解