天麒 发表于 2012-4-23 12:34:01

王爽汇编检测点2.2 的一些疑问: 给定段地址为0001H

王爽汇编检测点2.2 的一些疑问: 给定段地址为0001H,仅通多偏移地址寻址,CPU的寻址为00010H到1000FH
段地址*16+偏移地址=物理地址
问题一:按理说0001H*16==0010H是正确的,但是为什么在计算器上算0001H*16==16,为什么计算器的结果却是0016H、
问题二:物理地址和寻址能力有什么关系吗?

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


小甲鱼解析:
因为题目要求是要物理地址最终为20000H。我们知道偏移地址最小为0H,最大为FFF0H。
我们要求段地址能够取到的最小值,即要和偏移地址最大值配合,所以段地址应该为1001H,偏移地址为FFF0H:1001H * 10H + FFF0H == 20000H。我们要求段地址能够取到的最大值,即要和偏移地址最小值配合,所以段地址应该为2000H,偏移地址为0H
问题一:偏移地址最大为什么是FFF01H,不是FFFFH吗?为题二:1001H*10H+FFF0H==20000H,为什么要乘以10呢?不是应该要乘以16吗?



笑红尘 发表于 2012-4-23 12:34:02

问题一:偏移地址最大为什么是FFF0H,不是FFFFH吗?
    答:因为题目要求是要物理地址最终为20000H。我们知道段地址是乘以10H,所以 偏移地址最小为0H,最大为FFF0H.
问题二:1001H*10H+FFF0H==20000H,为什么要乘以10呢?不是应该要乘以16吗?
    答:这里10是十六进制,而16是十进制.   10H=16D   

心空草 发表于 2012-4-23 16:48:22

本帖最后由 心空草 于 2012-4-23 16:56 编辑

我当时做的时候没有想小甲鱼老师这么多,就是按的偏移地址的范围是0到ffff来算的,要求SA的最小值,必然是用最大的偏移地址来实现的,我想的最大偏移地址就是ffff,这样一来,SA*16后应该等于10001,但这样的SA是找不到的,那么最靠近这个SA的值1001就用该是最小的。当时我算出答案后看了网上公布出的结果,一看是对的,就没看老师的解释了,唉,不然提出这个问题就是我了,现在想一想,我猜老师将偏移地址的范围定为是0~FFF0是针对这个题目而言的吧!这是我的猜测,要是有谁知道这是怎么回事,还请道出其中的真谛。

天麒 发表于 2012-4-23 17:01:46

本帖最后由 天麒 于 2012-4-23 17:04 编辑

心空草 发表于 2012-4-23 16:48 static/image/common/back.gif
我当时做的时候没有想小甲鱼老师这么多,就是按的偏移地址的范围是0到ffff来算的,要求SA的最小值,必然是用 ...
那个FFF0的问题我在百度知道也看了不少答案、有的是用的FFFF最后得出的结果余一位、然后进一位、就是1001了。还有说用FFFF最后得出的不是16的倍数、所以用FFF0,也没有详细解释这个问题、所以还是弄不太清楚,

天麒 发表于 2012-4-24 20:21:36

笑红尘 发表于 2012-4-24 15:43 static/image/common/back.gif
问题一:偏移地址最大为什么是FFF0H,不是FFFFH吗?
    答:因为题目要求是要物理地址最终为20000H。我们知 ...

嗯、貌似理解了、谢谢,采纳了

key2046 发表于 2017-1-12 18:22:39

嗯、貌似理解了、谢谢,采纳了
页: [1]
查看完整版本: 王爽汇编检测点2.2 的一些疑问: 给定段地址为0001H