booneyang 发表于 2011-9-12 01:59:38

检测点2.2的(2)

          题如下:数据存放在20000H单元中,现给定个SA,若想用偏移地址寻到此单元,则SA应该满足的条件是:最小为_____,最大为____。
      鱼老师说 偏移地址最小是0H,最大是FFF0H。 偏移地址的范围不是最小为0H,最大为FFFFH吗?为什么又要说为FFF0H呢?
不是应该这么解么:X*10H+Y=20000H 求 X和Y的值出来吗?
      X=(20000H-Y)/10H
      Y应该是个10H的倍数 所以 他得偏移地址的取值应该说成 是一个(0H到FFFH)*10H 数的集合 应该有 (1+FFFH)个这样的集合!
不知道我说的对不对 请各位大鱼们指正!!!!!!

ytrfamli 发表于 2011-9-12 22:18:52

>>鱼老师说 偏移地址最小是0H,最大是FFF0H
不不,鱼老师没这麽说,老师这麽写只是因为在段地址最小的状况,
偏移地址提供FFF0H即可指向目标20000H

这麽考虑:

段地址=1000H,
这个时候,所能指向的地址最大为?
1000H*10H+FFFFH=1FFFFH

段地址加上1,1001H呢?
1001H*10H+FFFFH=2000FH.

但是我们想要到达的地方是20000H,所以鱼老师才写成
1001H*10H+FFF0H=20000H.

>>Y应该是个10H的倍数...是一个(0H到FFFH)*10H 数的集合
>>应该有 (1+FFFH)个这样的集合
没错,而你的结论跟老师答案也是吻合的,共1+FFFH=1000H个

老师解答:最小为1001H,最大为2000H,这之间有几个段呢?
2000H-1001H+1=1000H
(加1是为了算上本身,例如说,1到5有几个整数? 5-1 +1 =5个.)

依照你的公式
Y=0H~FFF0H(所有16的倍數)
所以,X=2000-Y/10=(2000-0)H~(2000-FFF)H=2000H~1001H

所谓的不谋而合,恩.

tree2001 发表于 2011-9-16 17:45:38

还是不懂啊!

kongkong 发表于 2011-9-16 22:37:12

我也刚做到这里。一开始和楼主一样的答案。 看了2楼的回复明白了。 看来不是什么都是*10H 给定数值(20000H)的就要倒过来做是不是相等了。我反正还是弄最大偏移做的。 1000H*10H+FFFFH=1FFFFH
20000H -1FFFFH=1 1000H+1=1001H 反正我是这样理解的

edoaker 发表于 2011-9-17 23:29:44

谢谢2楼的解答,终于明白为什么了,

sslas 发表于 2011-9-18 00:36:32

头大好难

liangzai7 发表于 2011-9-20 23:39:02

进来学习下!!1希望能弄懂!!1{:1_1:}
页: [1]
查看完整版本: 检测点2.2的(2)