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是最大了,只能往下调整。
- 20000H - FFFFH = 10001H,十进制是 65537,除以 10H 有小数所以不是倍数。
- 20000H - FFFEH = 10002H,十进制是 65538,除以 10H 有小数所以不是倍数。
- 20000H - FFFDH = 10003H,十进制是 65539,除以 10H 有小数所以不是倍数。
- ...
- 20000H - FFF0H = 10010H,十进制是 65538,除以 10H 整除。所以这个偏移地址FFF0H才是最大的偏移地址。
求得实际最大偏移地址 FFF0H,代入上述公式中(SA = (20000H - FFF0H) / 10),求得值为 1001H。
SA 最小为 1001H。
反过来思考
当段地址定为多少,CPU无论怎么变化偏移地址都无法寻到 20000H。
小于 1001H,或大于2000H都无法寻到20000H单元。即此题段地址最小不能小于1001H,最大不能超过2000H。
标签:10H,汇编语言,地址,偏移,FFFFH,20000H,习题,SA,王爽 From: https://www.cnblogs.com/hatsuzuki/p/17588450.html