lai 发表于 2011-8-6 11:46:30

检测2.2 求真相

应朋友要求,将第二题的答案详细解释一下:
因为题目要求是要物理地址最终为20000H。
我们知道偏移地址最小为0H,最大为FFF0H。

为什么偏移地址最大为FFF0H。??不是FFFFH吗??
在课本也没有讲到偏移地址最大为FFF0H??

求真相!!

parbbo 发表于 2011-8-6 11:48:35

段地址*16必须是一个以**x0为开始的数0-16个地址排列整齐的,而20000-ffff=10001,向后以了两位是不符合规定的,所以段要向后推移一个16位,这样就出现段地址为1001的问题

lai 发表于 2011-8-6 12:00:41

parbbo 发表于 2011-8-6 11:48 static/image/common/back.gif
段地址*16必须是一个以**x0为开始的数0-16个地址排列整齐的,而20000-ffff=10001,向后以了两位是不符合 ...

没错啊,2000H减去偏移地址最大FFFFH等于10001H,移一位就是1000H,{:5_94:}

zhdw 发表于 2011-8-6 12:05:26

p22页 讲的很清楚了还问这么多遍

parbbo 发表于 2011-8-6 12:36:25

这个题上面的分享中有解释,请参考!

蓝鹰 发表于 2011-8-6 20:16:54

先套用公式,段地址*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

lai 发表于 2011-8-7 08:30:40

谢谢大家!!
明白了...............................{:5_95:}

Potato丶 发表于 2011-8-8 17:19:13

..谢6楼。。懂了……{:5_109:}

暗翼天使 发表于 2011-8-9 15:06:11

路过。。。。。。。
页: [1]
查看完整版本: 检测2.2 求真相