如何在汇编中乘以2 ^ n?

时间:2013-02-19 11:39:41

标签: assembly x86 exponent

给定2个数字,x和n,将x乘以2 ^ n的方法是什么? 例如,x = 3.7,n = 5。所以3.7 * 2 ^ 5 = 118.4。 我需要在不使用FPU命令(数学协处理器)的情况下完成此操作。

所以我认为32 bt处理器中的数字用32位表示:第一个用于符号,接下来的8个(2-9)用于指数,接下来的23个用作SIGNIFICAND。

指数字段是2 ^ k中的k。所以我需要做的只是改变指数字段并添加n。 exponent = exponent + n

那么我如何在8086程序集中执行此操作?

谢谢

1 个答案:

答案 0 :(得分:3)

这里有一些非常丑陋的内联asm,VS风格。希望你能得到这个想法:

float mul(float f, int p)
{
    __asm {
        mov eax, f
        mov ecx, p
        shl ecx, 23
        add eax, ecx
        mov f, eax
    }

    return f;
}

这显然不会检查溢出等等。