汇编网首页登录博客注册
doing1984的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
好友圈
友情链接

[2012-08-30 15:44] 检测点2.2(有问题啊)

第一小题,00010H 到 1000F
第二小题,20000H = SA*16+0H----SA=2000H
         20000H = SA*16+FFFFH----SA*16=10001H
         看了下别人这里SA=1001,但是我用计算器算的10001H/10H得到得是1000H啊,因为16进制的16应该是10H吧,是吧~~!
评论次数(8)  |  浏览次数(350)  |  类型(汇编作业) |  收藏此文  | 

[  doing1984   发表于  2012-08-30 15:45  ]

这里的*16,这个16应该是2进制的吧?

[  doing1984   发表于  2012-08-30 15:57  ]

@fpamc,我可能@你吧,谢谢

[  fpamc   发表于  2012-08-31 07:18  ]

十进制的16=十六进制的10H

至于为什么是1001H

因为段地址*16(也就是10H)+偏移地址=物理地址。
段地址*16也就是起始地址。所以一个段的起始地址必然是16的倍数。这句话的专业说法在书的24页。

SA*16+0FFFFH=20000H
SA*16=10001H
这不是16的倍数。
所以。
我们可以改变最大偏移地址为0FFF0H

SA*16+0FFF0H=20000H
SA*16=10010H
SA=1001H

[  doing1984   发表于  2012-08-31 08:48  ]

也就是说20000H-偏移地址=16的倍数
这个偏移地址最大是FFFF,但是减去FFFF后所得的值不是16的倍数,所以减少FFFF,一直到得到的值是16的倍数时,才是正确的偏移地址

[  doing1984   发表于  2012-08-31 09:02  ]

请问你是怎么得到0FFOH这个偏移地址的呢,是一点点减的吗?

我现在用的方法是将20000H-FFFFH=60037,这不是一个16的位数,然后我推出了小于60037,但是是16位数的数

16*4000=64000
16*97=1552

SA=4097=1001H

这样也是可以的,谢谢解答

[  doing1984   发表于  2012-08-31 09:04  ]

上面那个写错了,20000H-FFFFH=65537

[  doing1984   发表于  2012-08-31 09:08  ]

“这不是一个16位数”写错了,应该是这不是一个16的倍数

[  游客   发表于  2012-08-31 15:25  ]

十六进制10001H不是10H(16)的整数倍啊。
段地址最后一位如果为0,说明SA*10H=****0H,那么也就是说那么****0H+****H=20000H的话,说明第二个加数最大只能是FFF0H,那么第一个加数最小值就出来了10010H,这是物理地址,在处以10H的话,就是1001了,即SA=1001,这就是SA的最小值。

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码