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

练习代码二十年

请问这个最小值是怎么算的? 我算出来是1000H,但是用1000H去推算出来是1FFFFH,看网上的答案有1001H,有点不明白 ![image.png](https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241109/09b333fbf90e3128f317f00544bcaf96.png)

阅读量:14

点赞量:0

问AI
你这个除法有截断,所以并不相等。是 $$ \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 的范围的。