有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元,则SA应满足的条件?
请问这个最小值是怎么算的?我算出来是1000H,但是用1000H去推算出来是1FFFFH,看网上的答案有1001H,有点不明白
回复
1个回答
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 的范围的。
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容