|
主题 : : 检测点2。2 [待解决] |
回复[ 44次 ]
点击[ 1689次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2009-08-09 11:17 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-12-30 12:38 |
给定段地址为000H,仅通过变化偏移地址寻址,CPU的寻址范围为---、---
有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小为?,最大为?
不太明白能不能详细说明一下 | | |
|
|
|
|
[第1楼]
[ 回复时间:2009-08-09 15:07 ]
[引用]
[回复]
[ top ] | |
荣誉值:188
信誉值:4
注册日期:2009-07-05 19:26 |
以下是我所做检测点2.2答案的具体过程,按照公式,一步步做的,也算是回答你的问题了,希望对你有帮助
物理地址=SA*16+EA
EA的变化范围为0h~ffffh
物理地址范围为(SA*16+0h)~(SA*16+ffffh)
现在SA=0001h,那么寻址范围为
(0001h*16+0h)~(0001h*16+ffffh)
=0010h~1000fh
物理地址=SA*16+EA
20000h=SA*16+EA
SA=(20000h-EA)/16=2000h-EA/16
EA取最大值时,SA=2000h-ffffh/16=1001h,SA为最小值
EA取最小值时,SA=2000h-0h/16=2000h,SA为最大值 | | |
|
|
|
|
[第2楼]
[ 回复时间:2009-08-14 09:22 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-04-14 13:00 |
|
|
|
|
|
[第3楼]
[ 回复时间:2009-08-16 10:11 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-08-15 20:20 |
终于搞明白了,谢谢tinyparticle 的分享,我会继续努力的 | | |
|
|
|
|
[第4楼]
[ 回复时间:2009-08-16 13:26 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:2
注册日期:2009-08-16 13:20 |
|
|
|
|
|
[第5楼]
[ 回复时间:2009-08-17 00:07 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:2
注册日期:2009-08-15 01:25 |
|
|
|
|
|
[第6楼]
[ 回复时间:2009-08-18 22:50 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-08-04 00:24 |
|
|
|
|
|
[第7楼]
[ 回复时间:2009-08-18 22:59 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-08-04 00:24 |
不解
偏移值:0,也算是一个偏移?
这里
EA取最大值时,SA=2000h-ffffh/16=1001h,SA为最小值
FFFFh/16不是整数 | | |
|
|
|
|
[第8楼]
[ 回复时间:2009-09-23 00:16 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2009-09-20 22:11 |
EA取最大值时,SA=2000h-ffffh/16=1001h,SA为最小值
这里 SA=(20000H-FFFFH)/16=1001H 是这样算的么? 我怎么用计算器算得的不是这个结果哦? | | |
|
|
|
|
[第9楼]
[ 回复时间:2009-10-09 03:30 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:8
注册日期:2009-10-08 14:01 |
如果最小值是1001H,安照公式,1001H*16+FFFFH=2000FH。这不矛盾吗?以我看这题有问题! | | |
|
|
|
|
[第10楼]
[ 回复时间:2009-10-09 03:32 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:8
注册日期:2009-10-08 14:01 |
最小值也不能是1000H,1000H*16+FFFFH=1FFFFH。 | | |
|
|
|
|
[第11楼]
[ 回复时间:2009-10-09 03:46 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:8
注册日期:2009-10-08 14:01 |
我懂了,我太死搬公式啦,问最小值并非要按照公式那样算,1001H*16+FFF0H=20000H。也只有这个整数最小可以配合偏移地址寻到20000H这个单元! | | |
|
|
|
|
[第12楼]
[ 回复时间:2009-10-11 11:02 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-10-10 22:09 |
|
|
|
|
|
[第13楼]
[ 回复时间:2009-10-13 08:04 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:4
注册日期:2009-09-28 22:40 |
sa必须为16的整数,满足条件的最小值只能为1001h,而不能是1000h | | |
|
|
|
|
[第14楼]
[ 回复时间:2009-10-19 03:03 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-10-16 02:59 |
EA取最大值时,SA=2000h-ffffh/16=1001h,SA为最小值
这里 SA=(20000H-FFFFH)/16=1001H 是这样算的么? 我怎么用计算器算得的不是这个结果哦?
如果最小值是1001H,安照公式,1001H*16+FFFFH=2000FH。 10010H+FFFFH=2000F 是这样的吧、!!
10010H 这里段地址 1001*16 2进制加4个0 那么16进制是加一个0 ..... | | |
|
|
|
|
[第15楼]
[ 回复时间:2010-04-11 10:36 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2007-09-01 06:43 |
1楼的结果 对吗?
物理地址=SA*16+EA
20000h=SA*16+EA
SA=(20000h-EA)/16=2000h-EA/16 到这里都对
EA取最大值时,SA=2000h-ffffh/16=1001h,SA为最小值 到这里 怎么上面的20000 变成2000了
EA取最小值时,SA=2000h-0h/16=2000h,SA为最大值 这里也一样,这样的话结果就不对了吧! | | |
|
|
|
|
[第16楼]
[ 回复时间:2010-04-22 06:05 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-04-21 07:08 |
物理地址为:20000H
而偏移地址的“最大”范围一定是:0000H~FFFFH之间。
现在关键点是在于当偏移地址为最大值FFFFH的时候 SA的最小范围是20000H-FFFFH=10001H,10001H绝对不符合段地址的概念,段地址SA*16时,这个数字一定要为0!
所以我们认知的偏移地址“最大”范围0000H~FFFFH是错误的。
如何认定偏移地址的“最大”范围?
根据“物理地址的最底位-偏移地址的最低位=0",所以0-X=0!X=0!
所以偏移地址的“最大”范围是:0000H~FFF0H之间!
规定了正确的偏移地址范围,再根据公式很自然的就得出了
1001H<=SA<=2000H
SA | | |
|
|
|
|
[第17楼]
[ 回复时间:2010-04-22 06:07 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-04-21 07:08 |
修改一下!
物理地址为:20000H
而偏移地址的“最大”范围一定是:0000H~FFFFH之间。
现在关键点是在于当偏移地址为最大值FFFFH的时候 SA的最小范围是20000H-FFFFH=10001H,10001H绝对不符合段地址的概念,段地址SA*16时,这个数字的“尾数”一定要为0!
所以我们认知的偏移地址“最大”范围0000H~FFFFH是错误的。
如何认定偏移地址的“最大”范围?
根据“物理地址的最底位-偏移地址的最低位=0",所以0-X=0!X=0!
所以偏移地址的“最大”范围是:0000H~FFF0H之间!
规定了正确的偏移地址范围,再根据公式很自然的就得出了
1001H<=SA<=2000H | | |
|
|
|
|
[第18楼]
[ 回复时间:2010-05-03 10:36 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-04-30 14:38 |
大家是不是忽略了检测点2.2上面的那句话:可以根据需要,将地址连续、起始地址为16的倍数的一组内存单元定义为一个段。1楼给出的SA最小值1001H显然不是16的倍数。当然,1楼的结果仍然是正确的,只不过我觉得应该是这样理解。1000H*16+FFFFH=1FFFFH,不能寻址到20000H,而1001H*16+FFFFH=2000FH,寻址范围包含了20000H,这是我的理解。 | | |
|
|
|
|
[第19楼]
[ 回复时间:2010-05-27 21:12 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-05-17 21:22 |
给定段地址为000H,仅通过变化偏移地址寻址,CPU的寻址范围为--
1001H,2000H
纠结之所在应该就在于1001的得出
我的理解是 :20000H-FFFF=10001H
10001H/10H=1000.1H(姑且加上0.1)
但是大家都知道段地址不可能为1000.1H,所以只能大不能小,则为1001H | | |
|
|
|
|
[第20楼]
[ 回复时间:2010-05-27 21:13 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-05-17 21:22 |
同理 当段地址小于1001H以下时,都不可能偏移到2000H | | |
|
|
|
|
[第21楼]
[ 回复时间:2010-05-30 22:10 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-05-25 22:09 |
其实个人认为这个还是基本数制和原理的理解问题。完全以16进制的方式来考虑就没有问题。
物理地址=SA*10H+EA
EA的变化范围为0h~ffffh
物理地址范围为(SA*10H+0h)~(SA*10H+ffffh)
即在这个变化范围内,要求其结果都等于20000H
20000h=SA*10H+EA
SA=(20000h-EA)/10H
EA取最大值时,SA=20000h/10H-ffffh/10H=1001h,SA为最小值
EA取最小值时,SA=20000h/10H-0h/10H=2000h,SA为最大值
关键是那个16,这个16是十进制的16,转化为十六进制,就是10H了。 | | |
|
|
|
|
[第22楼]
[ 回复时间:2010-06-02 17:33 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-06-01 22:23 |
|
|
|
|
|
[第23楼]
[ 回复时间:2010-06-04 23:15 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-06-01 18:16 |
|
|
|
|
|
[第24楼]
[ 回复时间:2010-06-05 21:20 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-06-04 10:04 |
我也是初学者,看过答案后,反复算了几遍,网上有进制转换工具 ,结合十进制和十六进制计算,结果是对的,讨厌的是 philbert_pb 兄说的那个16 书上也是的讲的是16进制,而计算的时候把10进制也加进去了,也不做说明。 | | |
|
|
|
|
[第25楼]
[ 回复时间:2010-06-11 23:43 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-04-08 17:43 |
理解还用那么麻烦吗,SA值如果是1000H时加上最大的EA FFFFH时是1FFFFH是寻不到的就差 1H,所以SA*10得加1H, 因为SA只有四位, 所以AS值应该是1001H. | | |
|
|
|
|
[第26楼]
[ 回复时间:2010-06-13 23:10 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-06-13 22:36 |
|
|
|
|
|
[第27楼]
[ 回复时间:2010-07-03 10:07 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-02-08 11:44 |
我想关键点在于先确定下偏移地址,偏移地址的取值在0-FFFF之间,并不是说一定是取FFFF,这个题的偏移量最大只能是FFF0. 20000-FFF0=10010 10010左移一位是1001.如果段地址是1000的话,偏移取最大值FFFF也不能寻址。这是我的理解,不知对不对? | | |
|
|
|
|
[第28楼]
[ 回复时间:2010-07-07 12:11 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-07-07 12:01 |
那的起始地址说的是基础地址SA*16意思。1001*16必然是16的倍数 | | |
|
|
|
|
[第29楼]
[ 回复时间:2010-07-07 13:20 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-07-07 12:01 |
以下数据都是16进制的
这里sa=(20000-ffff)/10=1000+1/10 而并非1001,如果用电脑上的计算器算的话这个1/10会被忽略掉,结果是1000,实际上这个1/10是存在的。
我很同意21楼的方法,算的时候把括号里的拆分出来算
EA取最大值时,SA=20000h/10H-ffffh/10H=1001h,SA为最小值
EA取最小值时,SA=20000h/10H-0h/10H=2000h,SA为最大值
这样用电脑上的计算器直接就能算出结果。 | | |
|
|
|
|
[第30楼]
[ 回复时间:2010-07-07 18:29 ]
[引用]
[回复]
[ top ] | |
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19 |
|
|
|
|
|
[第31楼]
[ 回复时间:2010-07-08 23:36 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2007-10-25 16:36 |
(段地址*16 实际是左移4位,左移4位就等于*10)
我的理解方法是这样的:
SA*10+EA
EA取最小值为:SA=(20000H-FFF0)/10=1001H,SA为最少值
EA取最大值为:SA=20000H/10,SA为最大值
如:SA为26231H = (26231H-FFF1)/10=1624H
SA为222Fc = (222FcH-FFFc)/10 = 1230H
SA为32139 = (222FcH-FFF9)/10
偏移地址的“最大”范围一定是:0000H~FFFFH之间。最SA尾数 | | |
|
|
|
|
[第32楼]
[ 回复时间:2010-07-09 11:04 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-07-08 11:50 |
|
|
|
|
|
[第33楼]
[ 回复时间:2010-07-09 11:23 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-07-08 11:50 |
回复:[第18楼]
------------------
强烈支持 | | |
|
|
|
|
[第34楼]
[ 回复时间:2010-07-09 17:53 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-06-26 05:35 |
刚刚还有点迷惑。
看到2楼的说法就明白了。
呵呵 谢了 | | |
|
|
|
|
[第35楼]
[ 回复时间:2010-07-09 21:19 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-07-09 19:46 |
|
|
|
|
|
[第36楼]
[ 回复时间:2010-07-10 23:12 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-07-06 12:55 |
EA取最大值时,SA=20000h-ffffh/16=1001h,SA 为最小值
EA取最小值时,SA=20000h-0h/16=2000h,SA为最大值
书上给出的结论:偏移地址16位,变化范围为0~FFFFH,仅用偏移地址来寻址最多可寻64KB个内存单元。
用20000H减去FFFFH(变化范围的最大值)再除以10H就等于SA的最小值,即SA=20000h-ffffh/16=1001h
用20000H减去0H(变化范围的最小值)再除以10H就等于SA的最大值,即SA=20000h-0h/16=2000h
本人是个初学者,不知道这样理解对不对? | | |
|
|
|
|
[第37楼]
[ 回复时间:2010-07-16 20:26 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-07-14 16:15 |
同意27楼的观点,偏移地址为0-fff0,偏移量最大只能是fff0.
因为物理地址最低位=偏移地址最低位。 | | |
|
|
|
|
[第38楼]
[ 回复时间:2011-11-28 16:00 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-11-28 15:50 |
以下是我所做检测点2.2答案的具体过程,按照公式,一步步做的,也算是回答你的问题了,希望对你有帮助
物理地址=SA*16+EA
EA的变化范围为0h~ffffh
物理地址范围为(SA*16+0h)~(SA*16+ffffh)
现在SA=0001h,那么寻址范围为
(0001h*16+0h)~(0001h*16+ffffh)
=0010h~1000fh
物理地址=SA*16+EA
20000h=SA*16+EA
SA=(20000h-EA)/16=2000h-EA/16
EA取最大值时,SA=2000h-ffffh/16=1001h,SA为最小值
EA取最小值时,SA=2000h-0h/16=2000h,SA为最大值
------------------
回复:tinyparticle 谢谢您这么透彻的解答! | | |
|
|
|
|
[第39楼]
[ 回复时间:2011-12-08 23:38 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:1
注册日期:2008-09-04 16:35 |
物理地址=SA*16+EA
EA的变化范围为0h~ffffh
物理地址范围为(SA*16+0h)~(SA*16+ffffh)
现在SA=0001h,那么寻址范围为
(0001h*16+0h)~(0001h*16+ffffh)
=00010h~1000fh
因该是 000010h ~ 0001fh 吧?!
假设最大值 1000fh, 你反过来看,段值还是 0010h么? | | |
|
|
|
|
[第40楼]
[ 回复时间:2011-12-08 23:59 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:1
注册日期:2008-09-04 16:35 |
EA取最大值时,SA=20000h-ffffh/16=1001h,SA为最小值
纠正为
EA取最大值时,SA =(20000h-ffffh)/16=10001h/16=1000h,SA为最小值 1000h
看23页, 21f60H 那个变化。 | | |
|
|
|
|
[第41楼]
[ 回复时间:2011-12-09 00:03 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:1
注册日期:2008-09-04 16:35 |
EA取最大值时,SA=20000h-ffffh/16=1001h,SA为最小值
纠正为
EA取最大值时,SA =(20000h-ffffh)/16=10001h/16=1000h,SA为最小值 1000h
错了,因该是看27楼的回答,才正确。
看23页, 21f60H 那个变化。
------------------
回复: | | |
|
|
|
|
[第42楼]
[ 回复时间:2011-12-28 23:16 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-08-10 12:45 |
其实个人认为这个还是基本数制和原理的理解问题。完全以16进制的方式来考虑就没有问题。
物理地址=SA*10H+EA
EA的变化范围为0h~ffffh
物理地址范围为(SA*10H+0h)~(SA*10H+ffffh)
即在这个变化范围内,要求其结果都等于20000H
20000h=SA*10H+EA
SA=(20000h-EA)/10H
EA取最大值时,SA=20000h/10H-ffffh/10H=1001h,SA为最小值
EA取最小值时,SA=20000h/10H-0h/10H=2000h,SA为最大值
关键是那个16,这个16是十进制的16,转化为十六进制,就是10H了。
------------------
回复: 这个正解。
EA变化范围0~FFF0H之间. | | |
|
|
|
|
[第43楼]
[ 回复时间:2012-01-05 14:27 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:2
注册日期:2011-12-28 19:49 |
疑惑:
(20000H-FFFF)/10H =1000H
(20000H-FFFF)/10H=20000H/10H-FFFF/10H=1001H
答案不一样。
20000H-FFFF=10001H 10001H/10H=1000H(这里丢掉了1)
而20000H/10H-FFFF/10H=1001H(这里没有丢掉)
看样子,以后我们计算这类题时,最好用几种方法算算,丢位的就要注意了 | | |
|
|
|
|
[第44楼]
[ 回复时间:2012-02-09 22:23 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-01-10 10:57 |
|