如何在Assembly中实现定点算法?

时间:2018-10-20 03:12:28

标签: assembly

我正在做一个大学项目,要求使用非整数。我们正在使用汇编语言进行编码,而我们使用的微处理器不支持浮点数。我想知道此限制是否有任何解决方法。请注意,我不是在寻找代码(微处理器是专门为学习目的而设计的,否则会作弊),但是我发现Wikipedia上有关定点算术的文章有些含糊。我的印象是我需要将数字表示为整数,但是我不确定这是否意味着将数字乘以2/10的幂或使用移位指令集(甚至是另一种解决方案)。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

固定点数就是简单地乘以比例因子的数字。缩放因子可以是您选择的任何 ,但是当然在整个计算中它必须保持恒定。

如果您要进行财务计算,则可以选择比例因子100,以便以美分为单位进行计算,或者甚至可以选择1000,以便在需要抵御的情况下达到十分之一美分。由于利息计算而产生的舍入误差。

没什么好说的,您的缩放系数必须是10的幂-可以是2的幂,或者可以是在您的应用程序中有意义的任何其他数字(Wikipedia文章提供了使用示例3600以1秒的分辨率来计算以小时为单位的时间间隔。

对于您的代码-您只使用常规的整数算法,并记住其中涉及一个比例因子。比例因子仅在输入和输出期间才真正重要。例如,如果您使用比例因子100进行财务计算,而问题是“ $ 4.20的五分之一是多少?”,则将输入4.20乘以比例因子得到420,然后做一个整数除以5得到84,然后除以比例因子得到答案为“ $ 0.84”。