有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元,则SA应满足的条件是:最小为 ,最大为 。
解:
引用公式''SA*16+EA=物理地址'公式:
SA*16+0=20000H
SA*16+FFFFH=20000H
用最小偏移地址求最大SA为20000H/10=2000H
用最大偏移地址求最小SA:
经过计算,
SA*16=10001H
10001H不能被10H整除。
这时候,我们应该想到'段地址*16必然是16的倍数,所以一个段的起始地址也一定是16的倍数。
所以说,只能通过改变偏移地址来成全起始地址。所以只能取能被10H整除的偏移地址。
由于偏移地址为16位。
所以能被10H整除的最大偏移地址就是FFF0H。(能被10H整除的只有F000H,FF00H,FFF0H)
因为刚才用最小的偏移地址0H求出了最大的段地址,所以要用最大的偏移地址FFF0H来求出最小的段地址。
现在我们知道了偏移地址最大应该取FFF0H。来一起套公式。
SA*16+FFF0H=20000H
SA*16=10010H
SA=1001H
所以段地址SA应满足的条件是最小为1001H,最大为2000H,方可得出物理地址20000H.
- [tomato] 懂了就好,嘿嘿!!!不懂就问,不要想的太多。 05/10 23:40
- [aikoxixi] 啊呀。懂了,我老是问低级的问题。 05/10 15:24
- [tomato] 正确。 04/11 00:18
- [fpamc] 楼上老师解答正确。 PS:认真看书,书上都有。 04/02 10:28
- [tomato] 应该从dos窗口中进入编译器目录下,然后编译汇编程序,而不应该直接运行masm.exe文件。认真看一 03/30 23:19
- [fpamc] ……红红姐哪里还不明白? 03/05 12:08
- [aikoxixi] 其他同学都明白了,就我难懂了呢。 03/05 10:08
- [tomato] 从解题思路中可以看出博主理解的很透彻。 03/04 22:20
- [fpamc] 不明白的同学都来看看吧…… 03/04 17:16
- [游客] 还是红红姐自己明白的好! 比我讲的清楚…… 03/03 19:39
- [aikoxixi] 老师来了,请以后多多指教引导。我好喜欢编程老师哦,好聪明的思想。 03/02 11:35
- [tomato] 希望博主能够坚持到底。 03/01 21:33
- [fpamc] 加油喔!! 02/29 08:02