【汇编】王爽《汇编语言(第3版)》相关习题

发布时间 2023-07-31 12:04:07作者: 阿初

P25 检测点2.2

(1)

偏移地址的取值范围在 0H ~ FFFFH 之间。

仅通过变化偏移地址寻址,根据物理地址计算公式:段地址 * 10H + 偏移地址。
已知段地址固定 0001H,即最小物理地址为 00010H,最大地址为 1000FH。

(2)

设偏移地址为 x,即公式为:SA * 10H + x = 20000H。

偏移地址的取值范围在 0H ~ FFFFH 之间。

最大值

当最大段地址时,偏移地址x为0。
代入公式:SA*10H + 0 = 20000H,简化后 SA = 20000H / 10H,SA = 2000H。

SA 最大为 2000H。

最小值

当最小段地址时,就要用最大偏移地址来代入。
代入公式:SA*10H + FFFFH = 20000H,简化后 SA = (20000H - FFFFH) / 10H。
求出值是 1000H,但这个结果是错的。

原因

假设段地址是1000H,那么久违反了段地址要为10H的倍数这条准则。

这就需要调整偏移地址的值,因为FFFFH是最大了,只能往下调整。

  1. 20000H - FFFFH = 10001H,十进制是 65537,除以 10H 有小数所以不是倍数。
  2. 20000H - FFFEH = 10002H,十进制是 65538,除以 10H 有小数所以不是倍数。
  3. 20000H - FFFDH = 10003H,十进制是 65539,除以 10H 有小数所以不是倍数。
  4. ...
  5. 20000H - FFF0H = 10010H,十进制是 65538,除以 10H 整除。所以这个偏移地址FFF0H才是最大的偏移地址。

求得实际最大偏移地址 FFF0H,代入上述公式中(SA = (20000H - FFF0H) / 10),求得值为 1001H。

SA 最小为 1001H。

反过来思考

当段地址定为多少,CPU无论怎么变化偏移地址都无法寻到 20000H。

小于 1001H,或大于2000H都无法寻到20000H单元。即此题段地址最小不能小于1001H,最大不能超过2000H。