给定两个数字,x和n,x乘以2^n的方法是什么?例如x=3.7和n=5。所以3.7×2^5= 118.4。我需要在不使用FPU命令(数学协处理器)的情况下完成此操作。
所以我认为32bt处理器中的数字是由32位表示的:第一位是符号,接下来的8 (2-9)是指数,后面的23位被称为SIGNIFICAND。
指数域是2^k中的k,所以我需要做的只是改变指数域,然后再加上n。exponent = exponent + n。
那么我该如何在汇编8086中做到这一点呢?
谢谢
发布于 2013-02-19 19:50:12
这里有一些相当难看的内联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;
}这显然不会检查溢出等。
https://stackoverflow.com/questions/14956580
复制相似问题