(1)给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为多少到多少?
答:物理地址=SA*16+EA
EA的变化范围为0H~FFFFH
物理地址范围为(SA*16+0H)~(SA*16+FFFFH)
现在SA=0001H,那么寻址范围为
(0001H*16+0H)~(0001H*16+FFFFH)
=00010H~1000FH
(2)有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小为多少?最大为多少?
答:
物理地址 20000H = SA * 10H + 偏移地址
显然,偏移地址应该取最大值,SA 才能达到最小。
那么,偏移地址取最大值:FFFFH,行吗?
代入上述方程,发现,两边的,最末位,不相等。
偏移地址最大值,只能取到:FFF0H,方程才有可能成立。
按照公式:
物理地址 = SA * 10H + 偏移地址
可知,物理地址、偏移地址,两者的最低位,必定是相同的。
当物理地址=20000H,偏移地址也只能是:XXX0H,取最大就是 FFF0H。
于是:SA = (20000H - FFF0H) / 16=10010H / 16 = 1001H。
标记:王爽汇编语言,段地址*16+偏移地址=物理地址,其中16是十进制。
提示,反过来思考一下,当段地址给定为多少,CPU无论怎么变化偏移地址都无法寻到20000H单元?
答:
先求出,段地址为多少的时候,变化偏移地址可找到20000H地址单元。
段地址 × 16 + 偏移地址 = 20000H
偏移地址=0000H,段地址则为 2000H;
偏移地址=FFF0H,段地址则为 1001H。
那么,当段地址大于 2000H,或小于 1001H,就不能找到 20000H。