Как преобразовать целое число, хранящееся в переменной, в число с плавающей запятой и сохранить его в другой переменной (сборке)? - PullRequest
0 голосов
/ 29 сентября 2019

Я работаю над преобразованием десятичной цифры в двоичную в 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

Ожидаемый результат, когда printf'd, должно быть ".234", но это выглядит как "234"

1 Ответ

0 голосов
/ 29 сентября 2019

Просто попробуйте.

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

(скомпилируйте, затем разберите)

вам нужно преобразовать в удвоенный (234,0), а затем разделить на (удвоенный) 1000,0, чтобы получить (удвоенный) 0,234

посмотрите на cvtsi2sd и divsd

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...