给定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程序集中执行此操作?
谢谢
答案 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;
}
这显然不会检查溢出等等。