op830508 发表于 2011-4-3 22:01:43

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

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

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

因为题目要求是要物理地址最终为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呢?》
            大大们指点下呀!!!

zzyital 发表于 2011-4-3 22:17:56

哇哈哈   你最后的问题我也问过!!!

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

回答你后面两个问题吧
1、最后一位肯定是0这样才能进行左移你的想法是正确的
2、你调到了16进制,用1*16=16,得到答案后转为十进制是22了.你先选十进制1*16得到答案后换到16进制,就是10了呀

op830508 发表于 2011-4-3 23:22:37

回复 2# zzyital


    :dizzy: 如此简单....我倒!

op830508 发表于 2011-4-3 23:27:45

那我这样计算和理解,计算一个16进制数的乘法!要先将2个16进制的数先转为10进制,然后想乘,
得到答案再转为16进制....这样才是正确的2个16进制相乘的答案了!:L

op830508 发表于 2011-4-3 23:37:46

:L自己给自己补充!!!!这个乘以16的意思.....不是16进制里面直接乘16....而是先转为10进制的10再乘:dizzy:
这个16说的是10进制的16????
那我上面说的4楼说的都是多于的!!大家当没看见哈!

殇年已陌。 发表于 2011-4-6 17:28:48

说实话我看了你的理解我就觉得 我现在怎么好像不明白了   额跟我理解的差太多了

yanyigang 发表于 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)的整倍数,唉.....一步出错步步错。

XsRecluse 发表于 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
页: [1]
查看完整版本: 2.2的问题让俺小白来解释下另请教高手指点