你把问题完整说一下。我估计目前还是无人能懂你的问题。
我猜你问的是 检测点2.2 的问题是吗?没有一个最大值是0001H 。说说您的计算过程。
关于(2):因为段的起始地址要为16的倍数。所以当段地址小于1001H或大于2000H时CPU都无法寻到。 没看明白,段地址是物理地址的前4位,物理地址是段地址乘以10H+偏移地址出来的,如果你的意思是偏移地址最大是多大,那偏移地址最大是ffffH 本帖最后由 猪的人品 于 2011-2-28 16:26 编辑
楼主问:一个数据放在内存为20000H单元中,段地址SA最小多少?怎么算的?最大多少怎么算的?
这是检测点2.2第2小题的问题,当时我看了也觉得不太理解,后来我想通了,我是这样想的。
偏移地址最大为FFFFH,那么基础地址最小为20000H-FFFFH=10001H,段地址最小还要除以16.
这样算的话问题就出来了段地址X16+偏移地址=物理地址。段地址X16相当于在后面加一个0,那么上面的公式得出基础地址为10001H,这是不可能的,因为无论段地址是多少数乘以16后面都不会是个1。
基础地址最后一位一定是个0,而且题目问的是20000H,后面也是个0,因此,偏移地址后面必须是个0,与基础地址相加后最后一位才会是0,所以,这道题的最大偏移地址不是FFFFH,偏移地址最大是FFF0H,这是最后一位数必定为0的情况下所取得的最大值。最小段地址计算公式应该是这样
20000H-FFF0H=10010H,这是最小基础地址,去掉后面一个0,最小段地址为1001H。
相当于10010H/10H(十进制的16十六进制为10H)=1001H。
补充:最大段地址比较容易,就是偏移地址为0(最小偏移)的时候所取得的最大段地址,段地址x16+0=20000H,所以最大段地址=(20000H-0)/10H=2000H。
知道了偏移地址为0就好办了,段地址X16等于20000H,乘16相当于加一个0,那么20000H减少一个0就是最大段地址。
改了几次,错别字基本改过来了。{:3_60:} 关于2.2第1小题:给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为?? 到 ??
偏移地址最小为0,最大为FFFFH,所以CPU的寻址范围为
0001H乘16+0到0001H乘16+FFFFH,算得CPU的寻址范围为00010H到1000FH。 没看明白,段地址是物理地址的前4位,物理地址是段地址乘以10H+偏移地址出来的,如果你的意思是偏移地址最大 ...
fallout.nj 发表于 2011-2-28 01:17 http://fishc.com/dz/images/common/back.gif
对偏移地址最大只能是 FFFFH相对8086而言。8086自所以要采用 段+偏的寻址方式 是因为他的寄存器只有16位,地址线却有20位。 一个很复杂的问题
h2995527 发表于 2011-2-28 09:05 http://fishc.com/dz/images/common/back.gif
你也是论坛元老啦,学习进度如何啊? (1)给定段地址为0001H,仅通过变化偏移量地址寻址,CPU的寻址范围为多少到多少?
解:CPU的寻址范围为 0001H*16+0 到 0001H*16+FFFF
即寻址范围为 00010H~1000FH
(2)有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元,则SA应满足的条件是:最小为多少?最大为多少?
解:要解答此题 我们可以根据 物理地址=段地址*16+偏移地址 的公式 列出两个方程 SA*16+0=20000H SA*16+FFFF=20000H
第一个方程SA的解 则为SA的最大值 第二个方程SA的解 则为SA的最小值
解方程:
SA=2000H
(1)SA*16+0=20000H
SA*16=20000H-0
SA*16=20000H
SA=20000H/16(10H)
SA=2000H
(2)
SA=1001H
SA*16+FFFFH=20000H
SA*16=20000H-FFFFH
SA*16=10001H
(因为基地址的起始地址必须是16的倍数 即SA*16=10001H不满足要求 ,所以这里的10001H 我们取值为10010H)
SA*16=10010H
SA=10010H/16(10H)
SA=1001H
所以SA应满足的条件是最小值为1001H 最大值为2000H (段地址*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尾数 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
本人是个初学者,不知道这样理解对不对? 楼上的解答非常好 谢谢了~~:lol 看了这么多,基本上能接受。。。 XsRecluse 发表于 2011-4-9 16:37 static/image/common/back.gif
(1)给定段地址为0001H,仅通过变化偏移量地址寻址,CPU的寻址范围为多少到多少?
解:CPU的寻址范围为 0001H*1 ...
恩 我就是看了这个解答后明白的,先前用windows自带计算器算出来没有小数,以为被整除了。晕 :P寻址方位64K
页:
[1]