鱼C论坛

 找回密码
 立即注册
查看: 3104|回复: 7

2.2的问题让俺小白来解释下另请教高手指点

[复制链接]
发表于 2011-4-3 22:01:43 | 显示全部楼层 |阅读模式

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

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

x
首先我也在这卡了好大会没明白!看了论坛好多人问这个,
那我把我的心得也说下,对的不对的望大家指点下!
我比较新手,所以解释也是很小孩子的方式!

第一呢,我把小甲鱼老师的详细解释稍微改下

因为题目要求是要物理地址最终为20000H。

我们知道偏移地址最小为0H,最大为FFF0H  (这不是一个重新的定义偏移范围!而是因为有20000H这个限制,所以限制了偏移地址不能为FFF1-FFFH)



这是老师的详细解释!我想比较小学点的话这样说比较容易明白!

因为题目要求是要物理地址最终为20000H。所以偏移地址最小为0H,最大为FFF0H(连在一起好看懂点吗?)

那这样改以后我们就能知道了把!因为这个20000H的最小位是0,所以偏移地址的最小位也注定为O那1-F肯定不行了
或者我们这样想一下!物理地址是20000H...尾数是0!!
           段地址是要左移一位的,所以尾数也是0!!

           那么0(段地址的最后一位)+X(偏移地址的最后一位)=0(物理地址的最后一位)!!!!
           我们说X该是多少?
所以说不管最大最小,偏移的最后一位一定是0的!


因为题目要求是要物理地址最终为20000H。

我们知道偏移地址最小为0H,最大为FFF0H(这里在说下,因为有20000H这个数值才决定了这句话,不是一个定理的)



上面不知道说的对不对!反正俺是这样解释通的,晕头转向的!希望大家指点下!


还有个问题呀!段地址在地址加法器里要左移一位!那他最后一位必定是0把??
              也就是说段地址*16得到的数值的最后一位必定是0????
              为什么我用计算器16进制里随便用个数乘以16,得到的值的最后一位不是0呢?》
              大大们指点下呀!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-3 22:17:56 | 显示全部楼层
哇哈哈   你最后的问题  我也问过!!!

你前面说的  我在其他帖子有回答  你可以看看

回答你后面两个问题吧
1、最后一位肯定是0  这样才能进行左移  你的想法是正确的
2、你调到了16进制,用1*16=16,得到答案后转为十进制是22了.你先选十进制1*16得到答案后换到16进制,就是10了呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-4-3 23:22:37 | 显示全部楼层
回复 2# zzyital


    :dizzy: 如此简单....我倒!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-4-3 23:27:45 | 显示全部楼层
那我这样计算和理解,计算一个16进制数的乘法!要先将2个16进制的数先转为10进制,然后想乘,
得到答案再转为16进制....这样才是正确的2个16进制相乘的答案了!:L
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-4-3 23:37:46 | 显示全部楼层
:L自己给自己补充!!!!这个乘以16的意思.....不是16进制里面直接乘16....而是先转为10进制的10再乘:dizzy:
这个16说的是10进制的16????
那我上面说的4楼说的都是多于的!!大家当没看见哈!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-6 17:28:48 | 显示全部楼层
说实话  我看了你的理解  我就觉得 我现在怎么好像不明白了   额  跟我理解的差太多了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-8 15:19:51 | 显示全部楼层
问题解决了,经过冥思苦想,最后还是找到了鱼请教到理想的结果。这个结果就是
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-9 16:44:22 | 显示全部楼层
(1)给定段地址为0001H,仅通过变化偏移量地址寻址,CPU的寻址范围为多少到多少?
解:CPU的寻址范围为 0001H*16+0 到 0001H*16+FFFF
即寻址范围为 00010H~1000FH

(2)有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元,则SA应满足的条件是:最小为多少?最大为多少?
解:要解答此题 我们可以根据 物理地址=段地址*16+偏移地址 的公式 列出两个方程 SA*16+0=20000H   SA*16+FFFF=20000H
第一个方程SA的解 则为SA的最大值 第二个方程SA的解 则为SA的最小值
解方程:
SA=2000H
(1)SA*16+0=20000H
SA*16=20000H-0
SA*16=20000H
SA=20000H/16(10H)
SA=2000H
(2)
SA=1001H
SA*16+FFFFH=20000H
SA*16=20000H-FFFFH
SA*16=10001H
(因为基地址的起始地址必须是16的倍数 即SA*16=10001H不满足要求 ,所以这里的10001H 我们取值为10010H)
SA*16=10010H
SA=10010H/16(10H)
SA=1001H
所以SA应满足的条件是最小值为1001H 最大值为2000H
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-3-28 21:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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