检测点2.2

    (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。

你可能感兴趣的:(汇编语言)