王爽的汇编语言,有这样一道题:
检测点2.2
(2) 有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小为 , 最大为 。
提示,反过来思考一下,当段地址给定为多少,CPU无论怎么变化偏移地址都无法寻到20000H单元?
我的思考过程是,关键是看“物理地址=段地址(SA)*10H+偏移地址(EA)”这句话,容易得到段地址=(物理地址-偏移地址)/10H(10H也可以写成16)。当偏移地址为最大时,能求得最小的段地址;否则求得最大的段地址。而偏移地址是16位的,也就是说寻址范围是0~FFFFH。那么,顺着这个想法很容易得到“答案”——当偏移地址为最大(FFFFH)时段地址最小;当偏移地址最小(0)时段地址最大。
但是,经过计算发现,“段地址=(物理地址-偏移地址)/16”对应的式子“SA=(20000H-EA)/16”,其数学上等价的另一条分配律得到的式子“SA=20000H/16-EA/16”,在计算SA最大值的时候所计算的