Click here to Skip to main content
Click here to Skip to main content

Convert Float to Int using Assembly Language Programming

By , 15 Jun 2005
 

Introduction

This program takes a floating point value as input and converts it into an integer by trimming the decimal point. Please e-mail your suggestion to Jayadev at jayadevmv@rediffmail.com.

Background

The code uses the tag _asm in VC++. Using the assembly code, the floating point value is converted into an integer value.

Using the Code

The code is very simple and it can be plugged into any other code easily.

The function ftoi looks like this:

int ftoi(float flt)
{
    int i;
    _asm
    {
        mov  eax,flt; //loaded mem to acc
        rcl  eax,1;   //left shift acc to remove the sign
        mov  ebx,eax; //save the acc
        mov  edx,4278190080; //clear reg edx;
        and  eax,edx; //and acc to retrieve the exponent
        shr  eax,24;
        sub  eax,7fh; //subtract 7fh(127) to get the actual power 
        mov  edx,eax; //save acc val power
        mov  eax,ebx; //retrieve from ebx
        rcl  eax,8;     //trim the left 8 bits that contain the power
        mov  ebx,eax; //store
        mov  ecx, 1fh; //subtract 17 h
        sub  ecx,edx; 
        mov  edx,00000000h;
        cmp  ecx,0;
        je   loop2;
        shr  eax,1;
        or   eax,80000000h;        
loop1:    
        shr  eax,1; //shift (total bits - power bits);
        sub  ecx,1;
        add  edx,1;
        cmp  ecx,0;
        ja   loop1;
loop2:  
        mov  i, eax;        
    
//check sign +/-        
sign:
        mov  eax,flt;
        and  eax,80000000h;
        cmp  eax,80000000h;
        je     putsign;
    }

    return i;

putsign:
    return -i;
}

History

  • 15th June, 2005: Initial version

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Jayadev MV
Web Developer
India India
Member
Hi.. I have been working on C/C++ for more than 2 years. My areas of interest are Network programming and System Level programming.
I work with C/C++ over Windows and Solaris.

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
Hint: For improved responsiveness ensure Javascript is enabled and choose 'Normal' from the Layout dropdown and hit 'Update'.
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
GeneralProblem with conversion of float to int using C++memberKishore JP3 Mar '08 - 1:25 
Questionhi why so difficult ?memberjustme2215 Jun '05 - 2:00 
Answer2+2 == sqrt(16)memberKochise15 Jun '05 - 3:11 
GeneralRe: 2+2 == sqrt(16)memberRick York15 Jun '05 - 8:11 
Since a floating point values (four-byte) can range from +/-3.4E38 and an integer can range from about +/-2.1E9 this seems to be of very limited usefullness.

AnswerRounding modememberDon Clugston15 Jun '05 - 14:29 
GeneralRe: Rounding modememberJohn M. Drescher15 Jun '05 - 16:16 
AnswerRe: hi why so difficult ?memberJohn M. Drescher15 Jun '05 - 16:10 
AnswerRe: hi why so difficult ?memberJeanLuc_17 Sep '09 - 6:52 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web03 | 2.6.130516.1 | Last Updated 15 Jun 2005
Article Copyright 2005 by Jayadev MV
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid