2013-02-19 119 views
1

給定2個數字,x和n,將x乘以2^n的方法是什麼? 例如x = 3.7和n = 5。所以3.7 * 2^5 = 118.4。 我需要這樣做,而不使用FPU命令(數學協處理器)。如何在裝配中乘以2^n?

所以我認爲32位bt處理器中的數字用32位表示:第1位是符號,後8位(2-9)是指數,後面23位稱爲SIGNIFICAND。

指數字段是2^k中的k。所以我需要做的只是改變指數字段並將n添加到它。 exponent = exponent + n

那麼我如何在程序集8086中做到這一點?

謝謝

+1

你有沒有發現什麼晦澀的處理器?沒有集成x87 FPU的最後一個x86 CPU是486SX IIRC。 – MSalters 2013-02-19 11:54:01

回答

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; 
} 

這顯然並沒有檢查溢出等