. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(CPU工作原理)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  检测点 2.2 遇到的问题  [待解决] 回复[ 9次 ]   点击[ 520次 ]  
zy3287
[帖 主]   [ 发表时间:2008-07-28 15:16 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-07-17 17:25
检测点 2.2 的第2题   数据存放在内存20000H单元中,问段地址SA需要满足的条件.

问题研究了半天没有头绪,后参考了一下答案  1001H--2000H

自己研究了一下,最大的2000H很容易看懂,但是最小的1001H是怎么来的呢?越看越迷茫

最后动手在计算器上计算了一下   20000-FFFF=10001 得出结论 1000*16+1=10001 得出结果1001H

通过此题明白,自己的算法和逻辑都不过关,没有参考答案有些题跟本就弄不明白......

有谁有其他的学习经验指点一下
zy3287
[第1楼]   [ 回复时间:2008-07-28 15:21 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-07-17 17:25
本人希望大家能把自己的学习心得和遇到的难题的解决思路发上来,供其他人学习使用
mess
[第2楼]   [ 回复时间:2008-07-28 16:41 ]   [引用]   [回复]   [ top ] 
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48
恩,我开始做这个题得时候觉得还可以,在求最大最小值的题的时候,自然的把他们归到了数学上去了。

这本书得检测题和实验,除了像这个题得几个题目外,例如检测题1.1和这个,其他得都可以自己用后面学到得debug等工具得到正确的答案。并且没有答案,我们往往会多思考,同时得到的也越多。
living
[第3楼]   [ 回复时间:2008-07-31 13:15 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-07-24 16:27
书上有答案的吗??我怎么找不到呢?
tjtchly
[第4楼]   [ 回复时间:2008-08-19 11:09 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-08-16 22:05
我在计算最小值的时候,是这样的,虽然答案是对的,但方法有点不对,特写出来
20000H-FFFFH=10001H,10001H/16H=1000H,但1000H+FFFFH=1FFFFH呀,怎么也寻不到20000H,于是在1000H后再一个1,就是1001H。
有点笨,见笑!
tjtchly
[第5楼]   [ 回复时间:2008-08-19 11:12 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-08-16 22:05
书好,论坛更好呀。
tjtchly
[第6楼]   [ 回复时间:2008-08-19 11:18 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-08-16 22:05
但LZ对“20000-FFFF=10001 得出结论 1000*16+1=10001 得出结果1001H ”的解释也还是不太明白,偶现在的理解是这样的:
10001——是最小值,是一个物理地址,是基础地址+偏移量得出来的,是一个20位的地址,所以也可写成10000:1;那么它的十六位地址是10000H/16H+1,得到1001H。
liuxianming2001
[第7楼]   [ 回复时间:2008-09-04 15:07 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-09-03 00:18
首先应明白:段地址的加减1,相当于实际定位的内存地址前进或后退16个存储单元

其次由20000-FFFF=10001 得到基础地址的最小值,即段地址*16 >= 10001

所以满足上述不等式的段地址最小值为1001

不知道我的解释行不行?
liuminghemama2
[第8楼]   [ 回复时间:2008-09-23 12:46 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2008-03-20 18:42
1:偏移地址为0的时候,段地址为最大,所以20000偏移一位=2000H
这个好理解
2:由于段之间存在一个64KB的限制,所以一个段的范围就限制在了0-FFFF之间
20000-FFFF=1001H=65537
这个结果大于了FFFF(65535),显然不符合.
由于物理地址是由基础地址(段地址*16)和偏移地址构成的,这里就存在一种规则下,随意的搭配
比如1+3=4 2+2=4..
要保证段地址为最小,也就是需要要求偏移地址越大
当偏移地址为FFFF的时候,结果不符合
一个段的值不得超过64KB,也就10000H(655536)这个时候由65536-16,求出的值,既小于FFFF,又是属于最大的偏移地址,所得的就是FFF0
20000H-FFF0H=10010H
cprime
[第9楼]   [ 回复时间:2008-09-24 13:34 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-08-22 16:10
书上已有提示方法,换一种思维方法。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved