求监测点2.2的解题过程
本帖最后由 天将 于 2013-12-9 21:34 编辑求监测点2.2的解题过程
要详细,易懂
谢谢!
题目:(1) 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为____到______。
2) 有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小为 ,最大为 。
第一题:首先偏移地址的变化范围为0000H-FFFFH,CPU的寻址范围为00010H+0000H到00010H+FFFFH(00010是0001向左移动一位,也就是乘以16),也就是00010H-1000FH;
第二题:偏移地址的最大变化范围为0000H-FFFFH,当偏移地址最小的时候,段地址就最大;
现在取最小偏移地址为0000H,段地址=(20000H-0000H)/16=2000H,则最大段地址为2000H;
取最大偏移地址为FFFFH时,段地址=(20000H-FFFFH)/16,因为20000H-FFFFH=10001H,向左移动一位的话就变成了1000,会将后面的1去掉,当段地址为1000H时,不管偏移地址是什么,都不可能保证,所以不能将这个1丢掉哦(不管是最后一位1,2,3...F都不行,都会被忽略掉),所以这个1要向前移一位,变成1001H,所以得到最小段地址为1001H{:1_1:} 你应该把题目写出来! 是检测点2.2, (1)给定段地址为0001H。。。。 这个和 (2)有一数据存放在内存20000H。。。这个么?
(1)相对来说简单。在段地址乘10H,就是原先的0001H变成00010H。范围就是00010H+0000H~00010H+FFFFH。 答案就应该是00010H~1000FH了。
(2)反过来算。SA*10H+偏移值=20000H。偏移值范围是0000H~FFFFH。所以得出的结论是:20000H-FFFFH<=SA×10H<=20000H 这个就等于 10001H<=SA×10H<=20000H
因此答案就是1001H~2000H了。(这里SA必须得是整数){:1_1:}
我也是刚刚开始学。有不会的一起讨论。 其实还是套用公式而矣,就是内存地址是怎么计算得来的,就是段地址*16+偏移地址,而DS*16就是相当于把把DS的值向左移一位,我昨天也重新做了一回! 没书在,看不到原题:funk: 本帖最后由 天将 于 2013-12-9 21:36 编辑
Reaphix 发表于 2013-12-8 23:52 static/image/common/back.gif
是检测点2.2, (1)给定段地址为0001H。。。。 这个和 (2)有一数据存放在内存20000H。。。这个么?
(1 ...
第一题看懂了,第二题还不会。能写得易懂点么?第二题的答案怎么得来的?
点滴成长 发表于 2013-12-9 22:39 static/image/common/back.gif
第一题:首先偏移地址的变化范围为0000H-FFFFH,CPU的寻址范围为00010H+0000H到00010H+FFFFH(00010是0001向 ...
谢谢!我懂了! 点滴成长 发表于 2013-12-8 22:10 static/image/common/back.gif
第一题:首先偏移地址的变化范围为0000H-FFFFH,CPU的寻址范围为00010H+0000H到00010H+FFFFH(00010是0001向 ...
......因为20000H-FFFFH=10001H,向左移动一位的话就变成了1000,会将后面的1去掉...,
这里应该是向右移动一位,不好意思:sweat: 点滴成长 发表于 2013-12-10 11:25 static/image/common/back.gif
......因为20000H-FFFFH=10001H,向左移动一位的话就变成了1000,会将后面的1去掉...,
这里 ...
我也发现了,其实不用说的。
页:
[1]