|
主题 : : 检测点2.2(2) [待解决] |
回复[ 20次 ]
点击[ 1537次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2011-08-13 20:48 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-11-28 00:00 |
(2) 有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小为 1001H ,最大为 2000H 。
2000H有任何问题,我感觉1001H是凑出来的。我算出来是1000H
SA=(20000H-EA)/16
SA=(20000H-FFFFH)/16
SA=(10001H)/16=1000.1H
大侠们我知道1000H是寻不到20000H的,到1001才可以20000H,我感觉我是凑出来的,四舍五入,小数点后面1肯定不要了呀? | | |
|
|
|
|
[第1楼]
[ 回复时间:2011-08-14 09:45 ]
[引用]
[回复]
[ top ] | |
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51 |
|
|
|
|
|
[第2楼]
[ 回复时间:2011-09-11 21:21 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-08-21 21:07 |
没感觉吧?
如果十六近制也有小数的话,真的伤不起了,太复杂了吧,索性进一法!!! | | |
|
|
|
|
[第3楼]
[ 回复时间:2011-09-11 22:16 ]
[引用]
[回复]
[ top ] | |
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59 |
|
|
|
|
|
[第4楼]
[ 回复时间:2011-10-09 15:17 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-10-05 14:00 |
我的疑问也在这个最小值 SA=(10001H)/16=1000.1H ,最右边的1丢失,结果是1000H,
但1000H是寻不到20000H的,
最多能寻到1000H * 16 +FFFFH=1FFFFH,距离20000H查1,
所以加了个1,结果变成1001H,此时能寻到的最大值为1001H * 16 +FFFFH=2000FH,
2000FH早已远远大出20000H,肯定能寻到喽。。。
新手,个人理解,如有不对大家多指点,谢谢。 | | |
|
|
|
|
[第5楼]
[ 回复时间:2011-10-09 15:31 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-10-05 14:00 |
又看见个帖子这么写的
SA=(20000H-EA)/16
=(20000H/16)-(FFFFH/16) // 我详细的分解
= 2000H - 0FFFH // 除16就是右移,EA最有边的F丢失
=1001H
所以EA取最大值时(FFFFH),SA=1001H
哎,,,迷糊了,咋回事呢?。。 | | |
|
|
|
|
[第6楼]
[ 回复时间:2011-11-25 23:12 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-11-19 15:29 |
第5楼的这种计算是错误的,数字公式都弄错了的。
3楼说法有道理。 | | |
|
|
|
|
[第7楼]
[ 回复时间:2011-11-26 04:05 ]
[引用]
[回复]
[ top ] | |
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59 |
汗,快俩月了都,其实还有一种使用在FPU中,叫浮点数(小数),但是它也是以2进制存放的,宽度为32位和64位(386下可以达到80位),理论上可以表示任意大的数,只是表示的方式不同。而且有套专门的指令集。 | | |
|
|
|
|
[第8楼]
[ 回复时间:2011-12-09 00:10 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:1
注册日期:2008-09-04 16:35 |
SA=(20000H-EA)/16
改这样:
SA=(20000H-EA)/ 10H
这样你们就看明白了,别把进制搞错了。。。。 | | |
|
|
|
|
[第9楼]
[ 回复时间:2012-02-18 15:57 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-07-20 08:57 |
是不是地址加法器都是16位的,没有20000参入计算啊
就是说地址计算时时按照
SA=(20000H-EA)/16
=(20000H/16)-(FFFFH/16) // 我详细的分解
= 2000H - 0FFFH // 除16就是右移,EA最有边的F丢失
=1001H
这么算的,不是完全按照数学公式来的 | | |
|
|
|
|
[第10楼]
[ 回复时间:2013-02-23 15:11 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2013-02-22 12:29 |
不明白,个人认为:最小是1000,最大是1FFF。 | | |
|
|
|
|
[第11楼]
[ 回复时间:2013-02-23 15:15 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2013-02-22 12:29 |
段地址最大不能是2000H,因为地址是从0开始的,20000H单元,地址最大是1FFFF. | | |
|
|
|
|
[第12楼]
[ 回复时间:2013-03-03 01:01 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2013-03-03 00:57 |
四楼正解,1000H无法寻到20000H,所以最小段地址为1001H | | |
|
|
|
|
[第13楼]
[ 回复时间:2013-03-10 01:07 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-09-11 22:46 |
哦, 總算弄明白了, 因為 物理地址(EA) = 段地址(SA) x 16 + 偏移地址
在一個段的開始, 即偏移地址=0 時,
EA = SA x 16 + 偏移地址
20000H = SA x 16 + 0
SA =2000H
在段的最尾時, 偏移地址=FFFFH
EA = SA x 16 + 偏移地址
20000H = SA x 16 + FFFFH
SA x 16 = 10001H
SA = 1001H (用第4及12樓的解說) | | |
|
|
|
|
[第14楼]
[ 回复时间:2013-07-10 10:17 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2013-06-27 08:42 |
这个题目我想了好久,看了jkuncle的学习博客
发现我们问题全想错了。
比如这数据在1H这位置,那这SA就必定小于或等于1了
这题应该是两个变量SA跟偏移。
所以答案应该是最小为0最大为2000
所以后面那个无法寻到的应该是SA<0H大于2000H | | |
|
|
|
|
[第15楼]
[ 回复时间:2013-07-10 10:20 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2013-06-27 08:42 |
这其实是个想法误区。
我们都把这个数据的范围定在10000-20000中了。
这还算不错的,我有一次想,这个数据放在20000H中,是不是这个20000H中就是20000H~2FFFFH…… | | |
|
|
|
|
[第16楼]
[ 回复时间:2014-01-22 10:49 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2014-01-21 22:13 |
|
|
|
|
|
[第17楼]
[ 回复时间:2014-04-26 02:32 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-12-22 18:01 |
当确定一个物理地址后,我觉得不是所有的偏移地址EA的范围都是固定的0000H~ffffH,这里正好是一个例子不是吗?按照SA的取值范围1001H~2000H,EA的范围是0000H~fff0H.可能是由于机器计算时的精度,导致范围变小。 | | |
|
|
|
|
[第18楼]
[ 回复时间:2014-05-29 15:29 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2014-05-27 13:40 |
详细可看p25小结内容,仅用偏移地址来寻址最多可寻64KB个内存单元。偏移地址为16位,他的变化范围只有0到FFFFH.所以,SA最小是1001H。就像是给定了一根棍子长度,你要站多高才能让这根棍子打到树上的果子。 | | |
|
|
|
|
[第19楼]
[ 回复时间:2015-01-23 20:46 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2014-11-21 10:38 |
|
|
|
|
|
[第20楼]
[ 回复时间:2015-03-23 18:01 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2015-03-23 17:52 |
不是有提示吗 SA为多少时CPU无法寻址到20000H ,sa=1000h 即无法寻址到,所以sa=1001H | | |