鱼C论坛

 找回密码
 立即注册
查看: 2061|回复: 4

这我不懂啊

[复制链接]
发表于 2012-3-20 22:55:59 | 显示全部楼层 |阅读模式

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

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

x
我们知道偏移地址最小为0H,最大为FFF0H
偏移地址不是最大是FFFFH吗,怎么又成这个啦,鱼哥
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-20 23:13:11 | 显示全部楼层
小甲鱼的意思是寻址内存单元为20000H的时候,偏移地址的最大值为FFF0H
哥们,你把前置条件都忽略了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-20 23:28:08 | 显示全部楼层
我也想问这个,我感觉可能因为段地址要乘16,最后一位变成0的原因,偏移地址必须最后为0才能保证20000最后是0  我也不太清楚
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-20 23:42:50 | 显示全部楼层

先套用公式,段地址*16+偏移地址=物理地址
那么我们已经知道了物理地址为20000H

SA = 20000 - 0000H  / 16 = 2000H ;最大值

SA = 20000 - FFFFH  / 16= 10001H :最小值
那么这里就出问题了,10001不能被16整除,也就是段地址不能满足*16+偏移地址= 20000H
所以偏移地址就要发生变化来满足段地址*16+偏移地址=20000H
20000H - FFFF = 10001H
20000H - FFFE = 10002H
20000H - FFFD = 10003H
20000H - FFFC = 10004H
20000H - FFFB = 10005H
20000H - FFFA = 10006H
直到.......
20000H - FFF0 = 10010H
这时10010H满足16的倍数了
物理地址减去最大偏移地址除以16等于最小段地址
20000H - FFF0H  / 16 = 1001H  ;最小值
所以最小值是1001H,最大值是2000H

注意上面的16是10进制的数,运算时要转化成16进制,也就是10H。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-3-21 21:59:43 | 显示全部楼层
谢谢大家了我了解了,其实一开始我也考虑到段地址起始应该为16的倍数,可是考虑的不深。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-19 22:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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