wzhxkz 发表于 2013-4-10 01:20:06

第2章 寄存器 检测点2.2 (2)问题的纠结

有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小为 1001H ,最大为 2000H
SA=(20000H-FFFFH)/10H(个人理解直接用16进制的10,代替10进制的16用计时器的时候方便,不知道对不?)
    =10001H/10H
    =1000
答案是错的

老师对的答案
2000H-FFFFH/16
我就是想问这个2000H是这么取出来的,能详解下?不然老在这里打圈

思来想去 发表于 2013-4-10 08:10:28

淡定,淡定,淡定……
你除以10h啥意思??

jsanwb 发表于 2013-4-10 10:32:49

sa*16+ip=20000
最小值:其中ip最大为ffff,此时sa*16=10001,因为是求最小值,除去16后,sa取1000的话无法相加得到20000,so,sa最小值只能是1001。
最大值:ip最小为0000,sa最大2000

用这个思路就没问题了。别陷在数学思维里……

小亮1201 发表于 2013-4-10 11:22:14

楼主的思路不对,但是又不好说?这个还真麻烦!!!

wzhxkz 发表于 2013-4-10 13:23:21

谢谢,各位鱼油的回答,jsanwb的提点,
你除以10h啥意思??这个只是在计时器上都用16进制计算方便,(10进制16=16进制10)

keke2xiaodie 发表于 2013-4-10 15:13:57

wzhxkz 发表于 2013-4-10 13:23 static/image/common/back.gif
谢谢,各位鱼油的回答,jsanwb的提点,
你除以10h啥意思??这个只是在计时器上都用16进制计算方便,(10进 ...

弄明白了就行。当时我也是纠结这个问题很长时间。 其实我们只要想其实EA最大值不一定是FFFFH,所有疑惑就全解开了。经过计算其实这道题里EA最大值只能到FFF0H而已,那SA就是1001H喽。因为如果EA是FFFFH的话,SA=(20000H-FFFFH)/10H=10001H/10H≈1000H,检查的时候会发现,1000H:FFFFH指向的是1FFFFH的地址,并不是想要20000H,而EA已经是最大值了,所以,只能把SA增加一个最小单位,也就是1,那SA=1001H,EA=20000H-1001H*10H=FFF0H,也就得到想要的地址了,所以SA最小是1001H,EA最大是FFF0H。。。。不知道我说的明白不明白。

wzhxkz 发表于 2013-4-10 18:54:38

谢谢,不在纠结这个问题了,应该是老师讲的必须转10进制下整除16,不产生余数
页: [1]
查看完整版本: 第2章 寄存器 检测点2.2 (2)问题的纠结