鱼C论坛

 找回密码
 立即注册
查看: 6389|回复: 20

物理地址的组合方法 最后一个是怎么弄的?

[复制链接]
发表于 2011-6-13 06:13:31 | 显示全部楼层 |阅读模式

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

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

x
截图1307916407.jpg   前4个没问题  可是最后一个感觉不大对劲?  既然说了物理地址是等于段地址*16+偏移地址       可是这里的段地址是1F00H  如果*16  就是1被进位上去了变成了F000H  那么加上后边的2F60我用计算器算的是11F60   怎么最前面会少了    变成了1   求解  高手答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-13 06:15:26 | 显示全部楼层
是不是进上去的1 是物理地址的1   所以11F60是加上进位上去的1(这个不是1  其实是10000H呢?) 那么就成了21F60呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-13 06:51:33 | 显示全部楼层
如果没记错的话。。 物理地址存放的是20位。
1F00进一位 1F000
1F000+2F16=21F60
结果没错。

评分

参与人数 1荣誉 +1 收起 理由
loop + 1 赞一个!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-13 06:55:48 | 显示全部楼层
另外。。 段地址 1F00H*16结果怎么是F000H?  结果应该是 1F000H啊。 怎么你前面的都是算出来的结果是5位数的。 到最后这个就变成4位数的了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-13 09:23:54 | 显示全部楼层
这里段地址×16是不需要进位的,对于8086CPU来说,内存地址本来就应该是20位的,就是5个16进制数,这里1F00H×16+2F60H=1F000H+2F60H=21F60H,结果没错的

评分

参与人数 1荣誉 +1 收起 理由
loop + 1 赞一个!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-13 12:47:13 | 显示全部楼层
不多说 上图
1f000是段地址1f00H*16得来的
是点.gif

评分

参与人数 1荣誉 +1 收起 理由
loop + 1 赞一个!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-13 14:58:06 | 显示全部楼层
我也很纳闷   用了计算器 就知道了。。。果然很强大。。!:L
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-13 15:05:37 | 显示全部楼层
照楼主这样分析,那2000H*16  应该等于多少? 把第一位2舍掉?那为什么你说前4个都没问题?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-13 18:47:50 | 显示全部楼层
本帖最后由 张国祥 于 2011-6-13 18:48 编辑

你理解错了吧

1F00H*16=1F000H     
1F000H+2F60H=21F60H  ,以上两步均在地址加法器中完成,不会有问题的,也不会舍去1F000H前面的1

评分

参与人数 1荣誉 +1 收起 理由
loop + 1 赞一个!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-14 18:03:35 | 显示全部楼层

拜托行不   物理地址是20位没错  可是是段地址*16   段地址只能存放16位   所以最前面的就自动进位了    以为我没看过汇编语言视频啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-14 18:04:08 | 显示全部楼层
张国祥 发表于 2011-6-13 18:47
你理解错了吧

1F00H*16=1F000H     

拜托行不   物理地址是20位没错  可是是段地址*16   段地址只能存放16位   所以最前面的就自动进位了    以为我没看过汇编语言视频啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-14 18:16:22 | 显示全部楼层
嗜血丨灵异狂 发表于 2011-6-14 18:04
拜托行不   物理地址是20位没错  可是是段地址*16   段地址只能存放16位   所以最前面的就自动进位了     ...

你把段地址*16看成 段地址*10就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-14 18:21:54 | 显示全部楼层
天下孤鹰 发表于 2011-6-13 06:51
如果没记错的话。。 物理地址存放的是20位。
1F00进一位 1F000
1F000+2F16=21F60

老大你的偏移地址写错了 是2F60难怪我算着算着感觉不对劲
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-14 20:37:05 | 显示全部楼层
嗜血丨灵异狂 发表于 2011-6-14 18:04
拜托行不   物理地址是20位没错  可是是段地址*16   段地址只能存放16位   所以最前面的就自动进位了     ...

寄存器只能存放16位,但是地址加法器就不是了!你要理解这一点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-14 20:40:49 | 显示全部楼层
嗜血丨灵异狂 发表于 2011-6-14 18:03
拜托行不   物理地址是20位没错  可是是段地址*16   段地址只能存放16位   所以最前面的就自动进位了     ...

另外段地址*16以后,就不能再称他为段地址了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-15 11:59:45 | 显示全部楼层
再生缘 发表于 2011-6-14 18:21
老大你的偏移地址写错了 是2F60难怪我算着算着感觉不对劲

{:1_1:}  一时大意。。

段地址没进到地址加法器的时候是只能存放16位的。。 地址加法器里面是存放20位的。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-15 18:09:26 | 显示全部楼层
直接用计算器算下就出来了吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-16 23:28:02 | 显示全部楼层
本帖最后由 king嗜血法师 于 2011-6-16 23:39 编辑

以前我也会犯这个错误,计算器里16进制算法*10就进位了,其实是没错的,因为这里的10就是10进制里的16,别在计算器里16进制算法*16。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-16 23:40:36 | 显示全部楼层
看来我答不对题,为什么你要把前面的1去掉呢?如果你要把1去掉,只想要4位数的偏移地址,那你应该也把11F60H前面的1也去掉,那就是4位数的偏移地址了,你要总地址你就不应该去掉前面的1,那就1F000H+2F60H=21F60H。这里你要想得出的1F000H的段地址是你脑海中得出来的,并不是显示在计算机中的,计算机中不会进位,只是你算的时候要进位而已。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-16 23:47:01 | 显示全部楼层
本帖最后由 king嗜血法师 于 2011-6-16 23:52 编辑

难道你没发现1F000H也是20位的地址吗,为什么要去掉1,段寄存器是16位的地址,但是你进行的1F00H*16是在地址加法器里进行的,这时就变成20位的了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-3-29 19:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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