微笑向暖~ 发表于 2017-10-22 09:21:15

求解

有一数据存放在内存 20000H 单元中,先给定段地址为SA,若想用偏移地址寻到此单元。
则SA应满足的条件是:最小为1001H,最大为2000H。

这个最大我都能理解,最小为什么是1001 ?

SA*16+FFFF=20000
SA*16=20000-FFFF=10001
SA=10001/16=???

丶忘却的年少o 发表于 2017-10-22 09:27:23

SA=10001/16=1000,再反推回去,1000*16+FFFF=1FFFF != 20000。
那怎么办,偏移地址不能加了,已经到顶了,那就只能段地址加,偏移地址减,来得出最后的物理地址20000。段地址1000不行,那试试1001,偏移地址是多少那?20000-1001*16 = FFF0。刚好偏移地址不会超出范围,那最小段地址就是1001

无我的侠圣 发表于 2017-10-22 14:37:05

无我的侠圣到此一游!

无我的侠圣 发表于 2017-10-22 17:27:57

搂主迟迟不把最佳答案给二楼,是在等我解答吗

微笑向暖~ 发表于 2017-10-22 21:04:29

无我的侠圣 发表于 2017-10-22 17:27
搂主迟迟不把最佳答案给二楼,是在等我解答吗

对呀,还在等一种更为清晰的思路,二楼的思路我的智商理解起来还是有些吃力,你看你可以百忙之中抽空帮我看一下吗?不胜感激!!!

无我的侠圣 发表于 2017-10-23 21:55:14

看图

本帖最后由 无我的侠圣 于 2017-10-23 21:56 编辑

看图

微笑向暖~ 发表于 2017-10-23 22:07:19

无我的侠圣 发表于 2017-10-23 21:55
看图

你能帮我在c那个板块解决一下那个不兼容的问题吗?

无我的侠圣 发表于 2017-10-23 22:19:22

本帖最后由 无我的侠圣 于 2017-10-23 22:26 编辑

当SA=1000H时,偏移地址为FFFFH时,最大的内存地址为 1FFFFH,没有达到20000H
当SA=1001H时,偏移地址为FFFFH时,最大的内存地址为2000FH,已经达到20000H

无我的侠圣 发表于 2017-10-23 22:26:21

本帖最后由 无我的侠圣 于 2017-10-23 22:28 编辑

你的疑问是:
SA=10001/16=???

10001是个16进制数, 16是个10进制数,你怎么能拿16进制数和10进制数相除
应该把10进制的16转化成16进制的数   16=10H

那么你的问题变成SA=10001H/10H=???
它除不尽,因为10001H不是10H 的整数倍
你就往上找一个离10001H最近的数,而且是10H 的整数倍
当然是10010
SA=10010H/10H=1001H

无我的侠圣 发表于 2017-10-23 22:29:08

微笑向暖~ 发表于 2017-10-23 22:07
你能帮我在c那个板块解决一下那个不兼容的问题吗?

你真麻烦,又问起C语言来了

无我的侠圣 发表于 2017-10-23 22:36:42

我去C板块看了。
你想在win10系统下安装vc++6.0
我也帮不了你
因为:我的电脑装的是win7,我没用过win10,没用过就没有发言权
我在安装vc++6.0时,也是遇到了这样那样的问题,只有重装系统才能搞定,查询别人说的方法都不管用

所以你还是老老实实重装系统吧

微笑向暖~ 发表于 2017-10-23 23:20:10

无我的侠圣 发表于 2017-10-23 22:36
我去C板块看了。
你想在win10系统下安装vc++6.0
我也帮不了你


哈哈,你真逗,砸门加个好友吧

无我的侠圣 发表于 2017-10-23 23:41:08

微笑向暖~ 发表于 2017-10-23 23:20
哈哈,你真逗,砸门加个好友吧

怎么加呢 微信还是QQ
页: [1]
查看完整版本: 求解