注册 登录
编程论坛 汇编论坛

求组王爽检测点2.2的问题,高手解答一下,谢谢。

zengshichun 发布于 2010-09-22 11:50, 1806 次点击
王爽的书里面检测点2.2的问题。
  
(1) 给定段地址为0001H,通过变化偏移地址寻址,CPU的寻址范围为?到?

第一个答案我知道应该是~~00010H,,但cpu寻址范围为什么等于1000FH??
为什么不是等于。FFF1FH呢? (我这答案是根据下面想的,也是书里的)
比如给定段地址1000H,用偏移地址寻址,CPU的寻址范围是10000H到1FFFF


谁可以用比较笨的方法解释一下啊? 顺便举个例子
6 回复
#2
wisji82010-09-22 13:36
比如给定段地址1000H,用偏移地址寻址,CPU的寻址范围是10000H到1FFFF

段地址是1000H,如果剩以10H,那就是10000,而10000和1FFFF相差FFFF。
所以能得到最大的范围是FFFF,而你的题目0001H,要剩以10H是0010,然后
你说0010 ~ ?到哪里是CPU的寻址范围呢!
#3
wisji82010-09-22 13:49
首先我们就要得到物理地址,物理地址 = 段地址 * 16 + 偏移地址。可以看P21
比如给定段地址1000H,用偏移地址寻址,CPU的寻址范围是10000H到1FFFF
段地址是1000H,然后乘以16(16的十六进制是10H),所以得10000,然后偏移地址是16位,所以变化范围是0~FFFF,也就是说,刚才的段地址10000 + 0~FFFF是10000~1FFFF,这注是CPU所能寻址到的范围。
至于你的题目,段地址是0001H,所以要剩以16(10H),得0010,然后加上偏移地址,得1000FH,最后得0010H ~ 1000FH
可以看下课本P25
#4
wisji82010-09-22 22:59
结帖吧,我还没有被人结过帖。哈哈。
#5
绝对的菜2010-09-25 11:46
简单地说。因为这里是16位的寄存器最多只能表示16位的数,16位的最大数用十六进制来表示就是ffffh,能够 寻到的范围就是段地址加ffffh
#6
mjsxjy2010-09-26 20:09
5楼解释是对的,我来得更详细一点:
王爽书里讲的都是以16位机来讲的,所以CPU可寻址的范围是64KB,这点书里写得很详细;
书里还有个公式:物理地址=段地址*16+偏移地址。
此题里给的段地址是0001H,写成偏移地址的表示即:0001:0000
                                              0001:0001
                                              0001:0002
                                               ......
                                              0001:FFFF
所以,根据上面书里的公式,最后一位0001*16+FFFF=1000F。题解。
注意,此处的16,在16进制里*,既相当于左移一位。0001*16=0010。
#7
zengshichun2010-09-26 23:55
谢了,,明白了。。
 分我平均结贴的。

1