Gavin 发表于 2012-5-30 14:48:12

物理地址的算法

物理地址就是绝对地址,网上找了下资料,绝对地址=段地址*16+偏移地址。   这个公式是绝对的么?还有,偏移地址能再帮忙说的更通俗一点吗,似懂非懂的样子。谢谢啦~

Gavin 发表于 2012-5-30 14:52:25

在入门视频里的第五章第一节里面,有个例子是说“段地址2000,偏移地址1000,其中的内容为0010H,合成的物理地址为(21000H)=0010H

wAterLoo 发表于 2012-5-30 15:05:07

本帖最后由 wAterLoo 于 2012-6-2 17:14 编辑

这个不是绝对的,取决于CPU的地址线的宽度,如果8086 CPU地址线的宽度只有16位,只能寻址64KB的空间,而实际8086有20位,所以使用偏移的寻址方式,可以寻址1024KB,也就是1Mb的空间 至于第二个问题,偏移地址,由于8086CPU寻址采取偏移+分段的寻址方式,那么你就要明白,分段的概念,比方说1810 若分100一段,那么1810 = 18 * 100 + 10 那这10就是偏移,若分10一段1810 = 181 * 10 +0 那0就是偏移,偏移是在段地址确认后 才能计算出来的 同一个物理地址的偏移地址也不一定相同,还要看你的段地址

思念忘记 发表于 2012-5-30 15:34:23

学习了!{:1_1:}{:1_1:}{:1_1:}

谁家姑娘不寂寞 发表于 2012-5-30 19:14:09

受教了谢谢

Gavin 发表于 2012-5-31 11:07:23

wAterLoo 发表于 2012-5-30 15:05 static/image/common/back.gif
这个不是绝对的,取决于CPU的地址线的宽度,8086 CPU地址线的宽度只有16位,只能寻址64KB的空间,如果使用偏 ...

谢谢啊,清楚了

努力学习 发表于 2012-5-31 21:54:52

wAterLoo 发表于 2012-5-30 15:05 static/image/common/back.gif
这个不是绝对的,取决于CPU的地址线的宽度,8086 CPU地址线的宽度只有16位,只能寻址64KB的空间,如果使用偏 ...

对于您的第二个回答我有点不明白,像您举的例子中 (1810 = 18 * 100 + 10 那这10就是偏移,若分10一段1810 = 181 * 10 +0 那0就是偏移)   后面的乘数怎么能变呢,比如8086的cpu中寻找总线有20位,所以它的物理地址=段地址*16+偏移地址,而称数16是固定的吧,而像您举得例子中怎么变了呢

wAterLoo 发表于 2012-6-2 17:13:04

本帖最后由 wAterLoo 于 2012-6-2 17:30 编辑

努力学习 发表于 2012-5-31 21:54 static/image/common/back.gif
对于您的第二个回答我有点不明白,像您举的例子中 (1810 = 18 * 100 + 10 那这10就是偏移,若分10一段   ...
前面有笔误,8086是20位 抱歉!!
乘数取决于CPU DS数据段寄存器的值,不过这个值只能是64K的整数倍,
那么同一个地址 9001H ,
如果DS=1000H,IP=1H
如果DS=2000H,IP=1000H
而我上面的100,10只是为了说明分段概念,实际8086 cpu中每个段都是64K的整合倍,不会是100,10

流久动 发表于 2012-6-2 18:18:57

我还是不太懂,我看小甲鱼的视频,在看怎么感觉没看过,
页: [1]
查看完整版本: 物理地址的算法