Witam, mam za zadanie napisać w assemblerze funkcję, która wyznacza liczbę cyfr zadanej liczby. Liczbę podaję w C++, przeskakuję do funkcji w assemblerze i wracam. I mam problem z kodem, który napisałam, bo o ile dla liczb jednocyfrowych zwraca mi poprawną liczbę, to przy większych dostaję błąd w obliczeniach zmiennoprzecinkowych i nie bardzo wiem dlaczego. Bardzo proszę o pomoc
#include<iostream>
using namespace std;
extern "C" int ile(int);
int main()
{
int a,s;
cin>>a;
s=ile(a);
cout<<s;
return 0;
}
global ile
section .text
ile:
mov rcx,1 ;licznik ilości cyfr
cmp rdi,10
jg _petla
jl _koniec
mov rax,0
mov rax,rdi
mov r9,10
_petla:
inc rcx
div r9
cmp rax,10
jg _petla
jl _koniec
_koniec:
mov rax,0
mov rax,rcx
ret