|
主题 : : 检测点2.2 第二题 有点不理解 [待解决] |
回复[ 10次 ]
点击[ 625次 ] | |
|
|
|
|
[帖 主]
[ 发表时间: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的倍数的值啊? | | |
|
|
|
|
[第1楼]
[ 回复时间:2012-06-05 16:58 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-06-01 08:21 |
|
|
|
|
|
[第2楼]
[ 回复时间:2012-06-05 16:59 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-05-10 17:28 |
|
|
|
|
|
[第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 | | |
|
|
|
|
[第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
------------------
回复:正解 | | |
|
|
|
|
[第5楼]
[ 回复时间:2012-06-05 18:12 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-05-10 17:28 |
|
|
|
|
|
[第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. | | |
|
|
|
|
[第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 | | |
|
|
|
|
[第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
算错了.还望指点,费解很久 | | |
|
|
|
|
[第9楼]
[ 回复时间:2012-07-10 21:18 ]
[引用]
[回复]
[ top ] | |
荣誉值:30
信誉值:4
注册日期:2012-01-01 16:36 |
回复:[第8楼]
------------------
16是十进制的。
16=10h | | |
|
|
|
|
[第10楼]
[ 回复时间:2012-08-23 23:01 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-07-03 21:10 |
|