鱼C论坛

 找回密码
 立即注册
查看: 3820|回复: 15

2.2中的一道检测题快把我的蛋憋暴了,求各位师兄帮忙啊

[复制链接]
发表于 2011-4-8 00:20:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
假鱼师傅,各位大虾师兄弟们,小的是个刚学习汇编的小虾米。我的问题是监测点2.2中的第(2)题。
【有一个数据存放在内存20000H单元中,现给定段地址SA,若想用偏移地址寻到此单元,则SA应满足的条件是:最小为__________,最大为__________】.
SA*16(10H)+FFFFH=20000H
SA*16(10H)=20000H-FFFFH=10001H
SA=10001H/16(10H)=1000H

这样算法应该没错吧,但是答案确实是1001,我的问题就是为什么结果是这个1001而不是1000?我在网上找了很多的相关问题的解释,但解释的结果实在太高深了太笼统了。可能是我的IQ太低了真的理解不了网友们给出的解释。所以今天求各位大虾师兄弟们给个通俗易懂的解释好吧,小的在这先谢谢了!3Q3Q

注:(我需要师兄们给我个原理上的解释,让我真正能明白为什么结果是1001H):dizzy: :dizzy: :dizzy:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-8 00:53:43 | 显示全部楼层
SA=10001H/16(10H)=1000H
???您用计算器试试。。看结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-8 00:56:26 | 显示全部楼层
是16进制不是10进制满16进1反之则然。我算法不行。。但是你可以用计算器的呀。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-8 00:58:16 | 显示全部楼层
我是这么理解的。。不知道对不对。。WINDOWS自带的除出来是BA2我也不知道是什么意思。。。纠结。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-4-8 01:16:03 | 显示全部楼层
用计算器也好手算也好,结果都是1000H,但正确结果却是1001H。我现在纠结的就是这个1001H是怎么演算过来的,这个过程和原理对于我们初学者非常重要啊,光知道运算方式,不懂其原理。。。等于白学。熊瞎子掰苞米,整一棒扔一棒。
继续求解中。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-8 02:25:46 | 显示全部楼层
回复 5# yanyigang


    ???转换。你找找有视频的???你能确定算出来的是1000而不是1001?你自己算清楚了都。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-8 04:08:01 | 显示全部楼层
楼主想知道的是 1000变成1001及FFFF变成FFF0的过程.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-8 06:08:55 | 显示全部楼层
百思不得其解,我只好这样认为了,
得到最大20000H - 0H / 10H = 2000H
小甲鱼说了段地址要为16(10H)的倍数,
先不纠结答案1000或1001,
进行16进制运算,用课本给出的物理地址20000H
分别递减最大偏移地址
20000H - FFFF = 1 0001H
20000H - FFFE = 1 0002H
20000H - FFFD = 1 0003H
20000H - FFFC = 1 0004H
20000H - FFFB = 1 0005H
20000H - FFFA = 1 0006H
直到.......
20000H - FFF0 = 1 0010H
这时10H满足16(10H)的倍数了
物理地址减去最大偏移地址除以16(10H)等于最小段地址
20000H - FFF0H  / 10H = 1001H
出来都在混小学生知识都忘了,
可能前面没学好,小甲鱼给的答案,不知道FFF0怎么来?
起码给个比较官方的算法,这样才够零基础.
视频都看完了,无聊来看看顺便解决这个问题.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-8 08:02:18 | 显示全部楼层
楼上的是  高手 谢谢。:lol
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-4-8 14:02:37 | 显示全部楼层
谢谢jenrya 的解答,我能看明白你的回答,但是疑惑还是没有测底解决掉。这就是在没有得出正确段地址结果(1001H)之前,我们算出的结果是1000H,这点大家都没疑问吧。
问题是经过SA(1000H)*16(10H)+FFFFH=20000H计算以后结果是1FFFFH。到这时我们才发现之前算过的SA*16(10H)+FFFFH=20000H
  SA*16(10H)=20000H-FFFFH
  SA*16(10H)=10001H
  SA=10001H 除以16(10H)
SA=1000H         这个结果大家都能看明白对吧。

结果是经过再次演算才知道SA的值为1000是不对的,所以才想到把最大偏移值改成FFF0H才是正确的。
那么纠结的地方到了,纠结的就在没有重新演算前,我们要根据什么判断最大偏移值是 FFF0H而不是FFFFH呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-4-8 14:07:37 | 显示全部楼层
各位前辈,师兄弟们,大家别嫌我这个超级菜鸟啰嗦。因为我有个毛病,一个问题要是不能测底完全明白它的运算原理,就算我通过其他路径得到了正确答案,那么我也是什么也没学到。还是等于什么都不会。小的不想架着拐走路。在这里再次感谢帮助我的每个人。谢谢大家了 ~!好人一生平安~!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-4-8 15:14:59 | 显示全部楼层
问题解决了,经过冥思苦想,最后还是找到了鱼请教到理想的结果。这个结果就是
SA*16(10H)+FFFFH=20000H
SA*16(10H)=20000H-FFFFH=10001H
SA=10001H/16(10H)=1000H
SA=1000错误。
理想的答案是,在运算过程中漏掉了一个步骤。这个步骤就是在SA*16(10H)=20000H-FFFFH=10001H
这一步时,接下来我没有考虑10001H(起始地址)是不是16(10H)的整倍数,唉.....一步出错步步错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-8 15:29:35 | 显示全部楼层
大哥
小甲鱼说了段地址要为16(10H)的倍数,
如果你按小甲鱼这句话来算你你的生命中就不会出现1000H这个万恶的东西,
忘记一千吧,别跟它有仇,
以后遇到类似的问题,直接吧偏移地址最后一们变成0不要问为什么,天知道啊!
20000H减去FFFFH 等于16(10H)的倍数吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-4-8 17:37:22 | 显示全部楼层
:Ljenrya ,谢谢你。我的纠结在追根问底于为什么是1001H,而不是1000H。呵呵我应该在纠结这个问题前想一下这个基础地址是否是16(10H)的整倍数才对。结果我漏掉了这一步,导致差点把蛋憋暴;P。谢谢jenrya ,更谢谢所有关心我的人,谢谢~!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-8 21:27:14 | 显示全部楼层
其实可以这样验证一下,假如想你那样说的话段地址为1000,偏移最大就是FFFF其结果就是1FFFF,假如段地址为1001,偏移最大为FFF0这不是正好是20000了,也就是小于1001的段地址,偏移怎么变也找不到20000,而段地址大于2000了也找不到20000物理地址,所以段地址只能在1001---2000范围变换,偏移也只能在0---FFFO之间变换。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-9 16:35:51 | 显示全部楼层
这个问题  曾经我也有详细解释过
最好养成搜索爬文的好习惯
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 10:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表