2013-02-19 2 views
1

2 개의 숫자 x와 n이 주어지면 x에 2^n을 곱하는 방법은 무엇입니까? 예를 들어 x = 3.7 및 n = 5. 그래서 3.7 * 2^5 = 118.4. FPU 명령 (수치 연산 보조 프로세서)을 사용하지 않고이 작업을 수행해야합니다.어셈블리에서 2^n을 곱하는 방법은 무엇입니까?

그래서 32 비트 프로세서의 숫자는 32 비트로 나타났습니다. 첫 번째는 부호 용이고 다음 8 개 (2-9)는 지수 용이고 다음 23은 SIGNIFICAND라고합니다.

지수 필드는 2^k의 k입니다. 그래서 내가해야 할 것은 단지 지수 필드를 변경하고 그것에 n을 더하는 것입니다. exponent = exponent + n.

그래서 어셈블리 8086에서 어떻게합니까?

는 여기에 몇 가지 매우 추한 인라인 어셈블리, VS 스타일의 당신

+1

오버 플로우에 대한 검사, 당신은 모호한 어떤 프로세서를 발견했다 않습니다 잘하면 당신은 아이디어를 얻을 수 있습니다? 통합 x87 FPU가없는 마지막 x86 CPU는 486SX IIRC입니다. – MSalters

답변

3

감사드립니다.

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

    return f; 
} 

이 분명히 등

관련 문제