. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(CPU工作原理)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  检测点2.2 第二题 有点不理解  [待解决] 回复[ 10次 ]   点击[ 625次 ]  
gaowei_hb
[帖 主]   [ 发表时间:2012-06-05 16:56 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-05-10 17:28
个人分析:
SA*16+偏移地址(0~FFFFH)=20000H
SA=10001H/16 ~ 20000H/16
SA=1000.1H~2000H

知道段地址必须是16的倍数
可是结果的1001H~2000H这个范围的1001H 是怎么算出来?是不是1001H是最接近1000.1H的16的倍数的值啊?
joyo2009
[第1楼]   [ 回复时间:2012-06-05 16:58 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-06-01 08:21
这个问题我也很疑惑
gaowei_hb
[第2楼]   [ 回复时间:2012-06-05 16:59 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-05-10 17:28
哪位前辈高手出来帮忙解释下啊
joyo2009
[第3楼]   [ 回复时间:2012-06-05 17:39 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-06-01 08:21
我谈一下我的理解
基础地址必须是16的倍数,在EA最大时(FFFFH),我们得出的基础地址值为10001H,不是16的倍数,为了使其成为16的倍数,基础地址的值可为10000H或者10010H,但是如果基础地址的值为10000H时,即使和EA的最大值相加也仅为1FFFFH,而基础地址为10010H时,和EA值FFF0H(仍在0~FFFFH范围内)相加即可得到20000H,因此基础地址10010H才是最小值,段地址为10010H/16=1001H
fpamc
[第4楼]   [ 回复时间:2012-06-05 17:57 ]   [引用]   [回复]   [ top ] 
荣誉值:30
信誉值:4
注册日期:2012-01-01 16:36
我谈一下我的理解
基础地址必须是16的倍数,在EA最大时(FFFFH),我们得出的基础地址值为10001H,不是16的倍数,为了使其成为16的倍数,基础地址的值可为10000H或者10010H,但是如果基础地址的值为10000H时,即使和EA的最大值相加也仅为1FFFFH,而基础地址为10010H时,和EA值FFF0H(仍在0~FFFFH范围内)相加即可得到20000H,因此基础地址10010H才是最小值,段地址为10010H/16=1001H
------------------
回复:正解
gaowei_hb
[第5楼]   [ 回复时间:2012-06-05 18:12 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-05-10 17:28
恩 有点理解了 谢谢老师们
742224144
[第6楼]   [ 回复时间:2012-06-25 20:05 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2012-06-25 19:51
额,我是这样理解的,不知道是否正确......
20000H - FFFFH(偏移地址) = 10001H(段地址*10H)
20000H - 0H(偏移地址)= 20000H(段地址*10H)

10001H/ 10H = 1000.1H,因为段地址为4位,所以需要把.1舍去,怎么办呢?(要么-0.1,要吗+0.9)10001H-1H = 10000H (段地址*10H)等价于FFFFH+1H,又因为FFFFH 已经最大,所以想要消除小数,只能10001H+FH= 10010H(段地址*10H),此时,段地址为1001H,偏移地址为FFF0H.
hysteriant
[第7楼]   [ 回复时间:2012-06-28 17:19 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2011-12-15 15:16
个人分析:
SA*16+偏移地址(0~FFFFH)=20000H
SA=10001H/16 ~ 20000H/16
SA=1000.1H~2000H

知道段地址必须是16的倍数
可是结果的1001H~2000H这个范围的1001H 是怎么算出来?是不是1001H是最接近1000.1H的16的倍数的值啊?
------------------
回复:
20000H/16-FFFFH=10001H,右移一位是1000H,不可能有小数出来的。
验证一下:10001H*16+FFFFH=1FFFFH,和题目的20000H相比差了1H。
那么1000H+1H=1001H
再验证一下:
1001H*16+FFFFH=20000H,这样就OK了,所以最小为1001H
yzq189424658
[第8楼]   [ 回复时间:2012-07-10 19:32 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-07-08 18:38
SA*16(这是16进制的,还是10进制的)+EA=20000H

如果这个16是16进制的

SA*10H+EA=20000H
SA=(20000H-EA)/10H
如果从数学角度分解开来
假设EA=FFFFH
(20000H-EA)/10H
=20000H/10H-FFFFH/10H
=2000H-FFFH
=1001H
---------------------------------
SA=(20000H-EA)/10H
如果不分开计算
假设EA=FFFFH
(20000H-FFFFH)/10H
=1000H
SA=1000H,EA=FFFF,也找不到20000H
那么EA有可能不能为FFFF

如果EA=FFF0H
(20000H-FFF0H)/10H
=1001H
算错了.还望指点,费解很久
fpamc
[第9楼]   [ 回复时间:2012-07-10 21:18 ]   [引用]   [回复]   [ top ] 
荣誉值:30
信誉值:4
注册日期:2012-01-01 16:36
回复:[第8楼]
------------------
16是十进制的。
16=10h
silence_dos
[第10楼]   [ 回复时间:2012-08-23 23:01 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-07-03 21:10
看了大家的回答,茅塞顿开啊
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved