鱼C论坛

 找回密码
 立即注册
查看: 5270|回复: 21

汇编2.2的问题,很不解,求高手

[复制链接]
发表于 2012-2-21 12:42:44 | 显示全部楼层 |阅读模式
5鱼币
本帖最后由 s0512 于 2013-5-26 13:53 编辑

题目:有一个数据存放在内存20000H单元中,现给定段地址为 SA, 若想用偏移地址寻到此单元,则SA应该满足的条件是: 最小值为    1001H   最大值为 2000H。

根据 物理地址=段地址*16+偏移地址    偏移地址范围是  0H~FFFFH   
  那 最小值 X *16+FFFFH=20000   有木有错? 那X应该=BA2H
       最大值  Y*16+0H=20000       Y=1745H
  答案 最小值却=1001H   最大值 = 2000H ?
求高手解答  我是真正的0基础啊~

最佳答案

查看完整内容

是计算步骤啦。不过不好意思我大于号小于号抄后面去的时候写反了,步骤是这样的: SAx16+0000H20000H 各得到SAx1610001H 得到 SA1000.1(1000.1取整,即1001),最终答案最小1001H,最大2000H。16进制的数除以16当然是小数点向前移一位啦,就像十进制中100除以10是不是就是把小数点向前移一位啊结果是10,计算机里你除以的那个16是十进制里的16啊,十六进制里有16这个数字吗?还有这个 SA>1000.1(1000.1取整,即1001)初中数学 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-21 12:42:45 | 显示全部楼层

是计算步骤啦。不过不好意思我大于号小于号抄后面去的时候写反了,步骤是这样的: SAx16+0000H<20000H  和  SAx16+FFFFH>20000H  各得到SAx16<20000H  和  SAx16>10001H  得到 SA<20000H  和  SA>1000.1(1000.1取整,即1001),最终答案最小1001H,最大2000H。16进制的数除以16当然是小数点向前移一位啦,就像十进制中100除以10是不是就是把小数点向前移一位啊结果是10,计算机里你除以的那个16是十进制里的16啊,十六进制里有16这个数字吗?还有这个 SA>1000.1(1000.1取整,即1001)初中数学啦,比如你一道题目要求x>1000.1的最小正整数,你说是几,是1001吧?同样的道理嘛所以那个题目的最小数就是1001H喽。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-21 13:16:50 | 显示全部楼层
根据题意列出两个不等式 SAx16+0000H<20000H  和  SAx16+FFFFH>20000H  各得到SAx16>20000H  和  SAx16<10001H   把十六除到后面来,由于是16进制所以把直接把小数点向前移一位 分别得到SA>20000H  和  SA<1000.1(1000.1取整,即1001)最终答案最小1001H,最大2000H   能自己算的就不要用电脑上的科学计算机
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-2-21 13:36:50 | 显示全部楼层
本帖最后由 jay4696 于 2012-2-21 13:39 编辑
氵冗黙┡浚ご 发表于 2012-2-21 13:16
根据题意列出两个不等式 SAx16+0000H20000H  各得到SAx16>20000H  和  SAx1620000H  和  SA


SAx16+0000H<20000H  和  SAx16+FFFFH>20000H  各得到SAx16>20000H  和  SAx16<10001H    计算步骤是? 还有 SA<1000.1(1000.1取整,即1001)这个也不明白,1000.2可以等于1002嘛? 我比较笨,麻烦您了。哦 还有就是我用计算机算  20000/16 为什么不是 等于 2000H  而是1745H
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-21 17:48:20 | 显示全部楼层
氵冗黙┡浚ご 发表于 2012-2-21 17:46
是计算步骤啦。不过不好意思我大于号小于号抄后面去的时候写反了,步骤是这样的: SAx16+0000H20000H  各 ...

我也刚接触的汇编,看小甲鱼视屏时认真点看,里面都讲到的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-2-21 18:15:49 | 显示全部楼层
氵冗黙┡浚ご 发表于 2012-2-21 17:48
我也刚接触的汇编,看小甲鱼视屏时认真点看,里面都讲到的

好的 谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-21 19:51:49 | 显示全部楼层
本帖最后由 非同凡想 于 2012-2-21 20:07 编辑

我非常理解楼主的苦衷,想弄懂一个问题,但又寻不到自己可以理解的答案,我也是0基础初学者,让我们共同努力吧,但最重要一点:希望你不要放弃!
相信楼上各位的解释你看完后还是不太清楚,我觉得这样告诉你容易理解些:
首先,段地址X16,这里的‘16’是从 1字=2字节=16位 而来的,可通俗的理解为十进制数据
所以,应该这样计算地址:X *16+FFFFh=20000h
1.    20000h-FFFFh=10001h
2.    10001h转换为十进制后为65537
3.    65537再除以十进制的16,等于4096余1
4.    4096转换为16进制等于1000h
再有我们可以反过来这样理解:16进制的16怎么表示?是不是10h?怎么能用16来表示呢?……
所以上题的求解同样可以用10001h除以10h直接得到1000h余1

希望我上面的回复可以帮你理解这个问题,其实很简单对吗?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-22 15:20:19 | 显示全部楼层
本帖最后由 莫名其妙 于 2012-2-22 15:25 编辑

10进制是遇10向前进一位
16进制是遇16向前进一位
20000h
段地址+偏移地址=物理地址
偏移地址的范围最大是 0000H--FFFFH
所以
段地址(sa)*(16)+0000H=20000h 这个是段地址最大时 sa=2000  这个就不用多说了 )*(16)这个要换成16进制的10H (这要补充一点 书上凡是数字后面没有H的都是10进制数要自己转换成16进制然后在数字后加H参与运算)
段地址(sa)*(16)   + ffffh=20000h   这个是段地址最小时  20000h-ffffh=10001/10h=sa=1000.1  这里的0.1四舍五入掉(你应该没有见过什么时候段地址带小数点的吧!其实我也没见过!~:lol)所以最小应该是1000     但是 , 1000*10H+FFFFh又不等于20000h 所以 最小应该是1001 而且引出的一个问题:这个偏移地址最大是多少?

当然是FFF0h咯!~:D:D

评分

参与人数 1鱼币 +1 收起 理由
゛゛不过如此. + 1 很给力!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-2-23 20:32:10 | 显示全部楼层
非同凡想 发表于 2012-2-21 19:51
我非常理解楼主的苦衷,想弄懂一个问题,但又寻不到自己可以理解的答案,我也是0基础初学者,让我们共同努力 ...

这样说就理解了, 非常非常感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-2-23 20:38:27 | 显示全部楼层
莫名其妙 发表于 2012-2-22 15:20
10进制是遇10向前进一位
16进制是遇16向前进一位
20000h

谢谢 你们的帮助
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-25 17:46:17 | 显示全部楼层
楼主,你的想法是对的,不过你的算法就不敢苟同了,
偏移最小值为0000,也就是代表段地址*16=物理地址,正确算法应该是段地址=2000,这是最大值
当偏移最大值为FFFF时,那么段地址应该是段地址*16+FFFF=20000,可我们知道FFFF还要加一个1才能等于10000,而段地址等于1000时左移了就成了10000了,和FFFF就没办法等于物理地址了,所以只能让段地址成为1001,而偏移最大值也只有FFF0了,建议楼主计算这些时用计算器吧,就不会出错了,还有这些数后面的H是代表十六进制的意思,我不知道你有没有拿来一块算了,:dizzy:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-2-27 12:43:47 | 显示全部楼层
午夜℃朦胧 发表于 2012-2-25 17:46
楼主,你的想法是对的,不过你的算法就不敢苟同了,
偏移最小值为0000,也就是代表段地址*16=物理地址,正 ...

我前面的段地址*16+偏移地址 那个16我当做16H来乘了 应该是10H
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-28 11:34:13 | 显示全部楼层
sa*16+0=20000 > 范围 > sa*16+ffff=20000,你算一下就ok了,16位机器最大寻址64K也就是ffff,2^16次方
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-29 10:36:09 | 显示全部楼层
{:1_1:} 果断学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-10-24 21:57:43 | 显示全部楼层
莫名其妙 发表于 2012-2-22 15:20
10进制是遇10向前进一位
16进制是遇16向前进一位
20000h

小白表示感谢,不然还不知道这个fff0H是谁生的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-10-26 21:20:28 | 显示全部楼层
非常感谢但是还是不太明白、看来我还要再认真的回去复习一下啊。在这个论坛里转悠发现每个角落都是知识。还要感谢楼主能提出问题从而让我这样的初学者得到进一步的学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-5 23:24:13 | 显示全部楼层
氵冗黙┡浚ご 发表于 2012-2-21 13:16
根据题意列出两个不等式 SAx16+0000H20000H  各得到SAx16>20000H  和  SAx1620000H  和  SA

真是难得给力的帖子啊。那 二进制  八进制 也是向前取一点 取整数吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-7 13:37:37 | 显示全部楼层
非同凡想 发表于 2012-2-21 19:51
我非常理解楼主的苦衷,想弄懂一个问题,但又寻不到自己可以理解的答案,我也是0基础初学者,让我们共同努力 ...

这位朋友讲的详细
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-5-13 20:06:14 | 显示全部楼层
我只是路过打酱油的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-5-13 20:49:36 | 显示全部楼层
我只是路过打酱油的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-18 00:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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