如何将存储在变量中的整数转换为浮点,并将其存储在其他变量(程序集)中?

问题描述 投票:0回答:1

我正在NASM中将小数转换为二进制数字。我已经将整数234存储在变量中,我们将其称为dcml,我想转换为.234。我该怎么办?

我对汇编语言很陌生,因此我尝试使用不同的操作数,例如fild,fld和fst,但似乎没有任何效果,至少对于我一直在尝试的东西而言。教授的示例是杂乱无章的,我不能很好地遵循它,我只想能够了解int-> float的情况。

mov    rax,0
mov    rax,[num]   ; stores the 234
fild   qword[num]  
fst    qword[num]
mov    [dcml],rax  ; needs to be .234

预期结果,在打印时应为“ .234”,但显示为“ 234”]

assembly floating-point x86-64 nasm
1个回答
0
投票

只需尝试。

#include <stdio.h>
#include <stdint.h>
double fun ( int64_t, int64_t );
int main ( void )
{
    printf("%lf\n",fun(234,1000));
    return(0);
}

#include <stdint.h>
double fun ( int64_t x, int64_t y )
{
    return((double)x/y);
}

(编译然后反汇编)

您需要转换为double(234.0),然后除以(double)1000.0,以获得(double)0.234

看看cvtsi2sd和divsd

© www.soinside.com 2019 - 2024. All rights reserved.