ー殇ヘ゛主演 发表于 2012-3-20 22:55:59

这我不懂啊

我们知道偏移地址最小为0H,最大为FFF0H
偏移地址不是最大是FFFFH吗,怎么又成这个啦,鱼哥

wAterLoo 发表于 2012-3-20 23:13:11

小甲鱼的意思是寻址内存单元为20000H的时候,偏移地址的最大值为FFF0H
哥们,你把前置条件都忽略了

满天飞 发表于 2012-3-20 23:28:08

我也想问这个,我感觉可能因为段地址要乘16,最后一位变成0的原因,偏移地址必须最后为0才能保证20000最后是0我也不太清楚

wAterLoo 发表于 2012-3-20 23:42:50

满天飞 发表于 2012-3-20 23:28 static/image/common/back.gif
我也想问这个,我感觉可能因为段地址要乘16,最后一位变成0的原因,偏移地址必须最后为0才能保证20000最后是 ...

先套用公式,段地址*16+偏移地址=物理地址
那么我们已经知道了物理地址为20000H

SA = 20000 - 0000H/ 16 = 2000H ;最大值

SA = 20000 - FFFFH/ 16= 10001H :最小值
那么这里就出问题了,10001不能被16整除,也就是段地址不能满足*16+偏移地址= 20000H
所以偏移地址就要发生变化来满足段地址*16+偏移地址=20000H
20000H - FFFF = 10001H
20000H - FFFE = 10002H
20000H - FFFD = 10003H
20000H - FFFC = 10004H
20000H - FFFB = 10005H
20000H - FFFA = 10006H
直到.......
20000H - FFF0 = 10010H
这时10010H满足16的倍数了
物理地址减去最大偏移地址除以16等于最小段地址
20000H - FFF0H/ 16 = 1001H;最小值
所以最小值是1001H,最大值是2000H

注意上面的16是10进制的数,运算时要转化成16进制,也就是10H。

ー殇ヘ゛主演 发表于 2012-3-21 21:59:43

谢谢大家了我了解了,其实一开始我也考虑到段地址起始应该为16的倍数,可是考虑的不深。。。
页: [1]
查看完整版本: 这我不懂啊