12,394,788 members (65,928 online)
Add your own
alternative version

49.4K views
281 downloads
12 bookmarked
Posted

# Convert Float to Int using Assembly Language Programming

, 15 Jun 2005 CPOL
 Rate this:
Please Sign up or sign in to vote.
An article on Converting Float value to an integer value trimming off the decimal part

## 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

 Web Developer India
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.

## Comments and Discussions

 First Prev Next
 Problem with conversion of float to int using C++ Kishore JP3-Mar-08 1:25 Kishore JP 3-Mar-08 1:25
 hi why so difficult ? justme2215-Jun-05 2:00 justme22 15-Jun-05 2:00
 2+2 == sqrt(16) Kochise15-Jun-05 3:11 Kochise 15-Jun-05 3:11
 I think the author just wanted to trim the mantissa to keep the integer part from a floating point, without having to deals with the FPU... Kochise In Code we trust !
 Re: 2+2 == sqrt(16) Rick York15-Jun-05 8:11 Rick York 15-Jun-05 8:11
 Rounding mode Don Clugston15-Jun-05 14:29 Don Clugston 15-Jun-05 14:29
 Re: Rounding mode John M. Drescher15-Jun-05 16:16 John M. Drescher 15-Jun-05 16:16
 Re: hi why so difficult ? John M. Drescher15-Jun-05 16:10 John M. Drescher 15-Jun-05 16:10
 Re: hi why so difficult ? JeanLuc_17-Sep-09 6:52 JeanLuc_ 17-Sep-09 6:52
 Last Visit: 31-Dec-99 18:00     Last Update: 23-Jul-16 1:48 Refresh 1

General    News    Suggestion    Question    Bug    Answer    Joke    Praise    Rant    Admin

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

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