有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元,则SA应满足的条件?

作者站长头像
站长
· 阅读数 9

请问这个最小值是怎么算的?我算出来是1000H,但是用1000H去推算出来是1FFFFH,看网上的答案有1001H,有点不明白有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元,则SA应满足的条件?

回复
1个回答
avatar
test
2024-06-24

你这个除法有截断,所以并不相等。是

$$ \frac{10001H}{16} > 1000H $$

$$ \frac{FFFFH}{16} > FFFH $$

而且,实际要解的也不是等于,而是:

$$ 20000H \le sa \times 16 + FFFFH $$

从而:

$$ sa \ge \frac{20000H-FFFFH}{16} $$

于是,解法1是:

$$ sa \ge \frac{20000H-FFFFH}{16} = \frac{10001H}{16} > 1000H $$

大于 1000H 的最小整数时 1001H ,经检验满足条件。

而解法二是:

$$ sa \ge \frac{20000H-FFFFH}{16} = \frac{20000H}{16} - \frac{FFFFH}{16} < 2000H - FFFH = 1001H $$

(注意 FFFFH / 16 前是减号)从这个式子是得不到 sa 的范围的。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容