鱼C论坛

 找回密码
 立即注册
查看: 3240|回复: 5

检查点2.2

[复制链接]
发表于 2011-12-19 21:49:11 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 500年前 于 2011-12-19 21:51 编辑

先看看小甲鱼老师的解释:

应朋友要求,将第二题的答案详细解释一下:
因为题目要求是要物理地址最终为20000H。
我们知道偏移地址最小为0H,最大为FFF0H。

我们要求段地址能够取到的最小值,即要和偏移地址最大值配合,所以段地址应该为1001H,偏移地址为FFF0H:1001H * 10H + FFF0H == 20000H。

为什么说偏移地址最大为FFF0H?偏移地址是16位的,变化范围应该为0-FFFFH才对啊,王爽老师的书也是这么说的?FFFOH是怎么来的?有点糊涂了,麻烦哪位解释一下!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-20 09:14:03 | 显示全部楼层
段地址=(内存地址-偏移地址)/16.偏移地址最小时,段地址可去最大值;偏移地址最大时候,段地址可取最小值。
使得段地址取到最大值的最小偏移值是0;使得段地址取到最小值的最大偏移地址是FFF0H.
FFFFH的偏移地址值无法让段地址取到值的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-12-20 09:59:55 | 显示全部楼层

计算公式都明白 就是不明白FFF0H是怎么得来的 总得有个说法吧 不可能是想当然的
例如:偏移地址是16位的,所以偏移地址最大值为FFFFH,这个是计算得来的 FFF0H就不知道了?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-21 09:15:07 | 显示全部楼层
FFF1H~FFFFH这区间内的偏移地址值都无法让段地址取到值。说到想当然,像这样简单的算术还真是可以想当然,你也别纠结,自己对公式去算下吧。不再回了~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-21 11:40:00 | 显示全部楼层
唉呀,要是我还留有几个月前替另一位网友解答的帖子就好了...

这个,偏移地址最大是FFFFh没错,鱼老师所说的是指,符合该题目要求的偏移地址最大只有到FFF0h,
後面的偏移量FFF1h~FFFFh存在吗?
当然,但是它们不符合题目要求,就只是如此的意思罢了,不必太钻牛角尖.

为什麽?考虑一下:

段地址最大,偏移量最小的情况 段地址 2000h*16 + 偏移0000h = 20000h
段地址最小,偏移量最大的情况 段地址 1001h*16 + 偏移FFF0h = 20000h

想再把段地址变小让偏移量变大吗?这是不可行的:
1000h*16 + 偏移FFFFh = 1FFFFh , 最大的偏移量,以1字节饮恨,构不着20000h

段地址在1001h的情况下,偏移量FFF1~FFFF对应的分别是20001h~2000Fh,
但是那些都已经超过20000h了,不是题目所要的,所以鱼老师才说,(符合题意的)偏移量最大是FFF0h

(呃,还是不懂的话,可以看下制顶loop网友的帖子里也有说明.)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-21 20:10:59 | 显示全部楼层
简单来说:段地址能够取到的最小值是 1001h

而 1001h*16 =10010h + FFFFh是等于 2000Fh  (非题目的20000h)

所以那个偏移量应该递减为FFF0h才符合题意(鱼老师很认真教学啊)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-10-8 18:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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