Я пытаюсь написать простую программу на C (с использованием функции сборки extern), которая преобразует килограммы в фунты.Вот функция на C и способ ее вызова:
extern int convert(int value, int factor);
printf("Value in Pounds: %lf\n", convert(value, 2205)/1000.0); // doing division in C since I could not figure out how to work with floating point in assembler
Однако, когда параметр «value» слишком велик (я хочу, чтобы он работал с 9-значным целым числом), вычисленное значение неверно,Как я могу решить проблему?Вот код ассемблера:
.globl _convert
_convert:
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %eax # get value
movl 12(%ebp), %ecx # get factor
mull %ecx
movl %ebp, %esp
popl %ebp
ret
Я также попытался написать цикл, который повторяет количество раз "фактор" и добавляет к нему "значение", но я получаю те же результаты.