. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(CPU工作原理)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  检测点2。2  [待解决] 回复[ 44次 ]   点击[ 1689次 ]  
fang
[帖 主]   [ 发表时间:2009-08-09 11:17 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-12-30 12:38
给定段地址为000H,仅通过变化偏移地址寻址,CPU的寻址范围为---、---

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

不太明白能不能详细说明一下
tinyparticle
[第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为最大值
443930380
[第2楼]   [ 回复时间:2009-08-14 09:22 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-04-14 13:00
原来我都做错了  - -|||
powersun29
[第3楼]   [ 回复时间:2009-08-16 10:11 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-08-15 20:20
终于搞明白了,谢谢tinyparticle 的分享,我会继续努力的
njutyangxiao
[第4楼]   [ 回复时间:2009-08-16 13:26 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:2
注册日期:2009-08-16 13:20
貌似我也搞明白了
xp55699312
[第5楼]   [ 回复时间:2009-08-17 00:07 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:2
注册日期:2009-08-15 01:25
一楼的哥们讲的很好的。搞明白了。。
chns811
[第6楼]   [ 回复时间:2009-08-18 22:50 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-08-04 00:24
哎,原来我也做错了
chns811
[第7楼]   [ 回复时间:2009-08-18 22:59 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-08-04 00:24
不解
偏移值:0,也算是一个偏移?

这里
EA取最大值时,SA=2000h-ffffh/16=1001h,SA为最小值 

FFFFh/16不是整数
403413384
[第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 是这样算的么?  我怎么用计算器算得的不是这个结果哦?
smallwolf
[第9楼]   [ 回复时间:2009-10-09 03:30 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:8
注册日期:2009-10-08 14:01
如果最小值是1001H,安照公式,1001H*16+FFFFH=2000FH。这不矛盾吗?以我看这题有问题!
smallwolf
[第10楼]   [ 回复时间:2009-10-09 03:32 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:8
注册日期:2009-10-08 14:01
最小值也不能是1000H,1000H*16+FFFFH=1FFFFH。
smallwolf
[第11楼]   [ 回复时间:2009-10-09 03:46 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:8
注册日期:2009-10-08 14:01
我懂了,我太死搬公式啦,问最小值并非要按照公式那样算,1001H*16+FFF0H=20000H。也只有这个整数最小可以配合偏移地址寻到20000H这个单元!
qq12580
[第12楼]   [ 回复时间:2009-10-11 11:02 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-10-10 22:09
学习中
qzzsunlly
[第13楼]   [ 回复时间:2009-10-13 08:04 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2009-09-28 22:40
sa必须为16的整数,满足条件的最小值只能为1001h,而不能是1000h
135453
[第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   .....
kaen007186
[第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为最大值               这里也一样,这样的话结果就不对了吧!
royking87
[第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
royking87
[第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
danny
[第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,这是我的理解。
392271275
[第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
392271275
[第20楼]   [ 回复时间:2010-05-27 21:13 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-05-17 21:22
同理 当段地址小于1001H以下时,都不可能偏移到2000H
philbert_pb
[第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了。
515332695
[第22楼]   [ 回复时间:2010-06-02 17:33 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-06-01 22:23
受教了
wangminli
[第23楼]   [ 回复时间:2010-06-04 23:15 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-06-01 18:16
崇拜tinyparticle !
jyb1983
[第24楼]   [ 回复时间:2010-06-05 21:20 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-06-04 10:04
我也是初学者,看过答案后,反复算了几遍,网上有进制转换工具  ,结合十进制和十六进制计算,结果是对的,讨厌的是   philbert_pb 兄说的那个16   书上也是的讲的是16进制,而计算的时候把10进制也加进去了,也不做说明。
donggs02
[第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.
yanyuxiaoji
[第26楼]   [ 回复时间:2010-06-13 23:10 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-06-13 22:36
终于有点明白了
caoxhui
[第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也不能寻址。这是我的理解,不知对不对?
vern
[第28楼]   [ 回复时间:2010-07-07 12:11 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-07-07 12:01
那的起始地址说的是基础地址SA*16意思。1001*16必然是16的倍数
vern
[第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为最大值 
这样用电脑上的计算器直接就能算出结果。
masmaster
[第30楼]   [ 回复时间:2010-07-07 18:29 ]   [引用]   [回复]   [ top ] 
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19
学汇编,要用十六进制的思维
myljb
[第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尾数
asmcookie
[第32楼]   [ 回复时间:2010-07-09 11:04 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-07-08 11:50
myljb ,正确
asmcookie
[第33楼]   [ 回复时间:2010-07-09 11:23 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-07-08 11:50
回复:[第18楼]
------------------
强烈支持
conntfs
[第34楼]   [ 回复时间:2010-07-09 17:53 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-06-26 05:35
刚刚还有点迷惑。
看到2楼的说法就明白了。
呵呵 谢了
conca
[第35楼]   [ 回复时间:2010-07-09 21:19 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-07-09 19:46
二楼是错的
xwx520xwx
[第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
本人是个初学者,不知道这样理解对不对?
leip386
[第37楼]   [ 回复时间:2010-07-16 20:26 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-07-14 16:15
同意27楼的观点,偏移地址为0-fff0,偏移量最大只能是fff0.
因为物理地址最低位=偏移地址最低位。
atmbank
[第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 谢谢您这么透彻的解答!
e56004474
[第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么?
e56004474
[第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 那个变化。
e56004474
[第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 那个变化。
------------------
回复:
haker007
[第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之间.
zhouyoujun
[第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(这里没有丢掉)
看样子,以后我们计算这类题时,最好用几种方法算算,丢位的就要注意了
fychenyu
[第44楼]   [ 回复时间:2012-02-09 22:23 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-01-10 10:57
42楼正解,也很好理解!
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved