Muszę wypisać liczbę z rejestru EDX:EAX 64-bitową za pomocą dzielenia przez 10 (zadanie z laborek). Z pisaniem programu sobie poradzę potrzebny mi jest tylko algorytm. Za wszelkie pomysły z góry dziękuje.
0
0
Algorytm? Chyba najbardziej klasyczny wygląda tak:
- wrzucasz na stos 0;
- dzielisz liczbę przez 10;
-
or
reszty z dzielenia z '0' - uzyskanie cyfry reszty - i wrzucenie na stos; - powtarzasz dzielenie i wrzucanie w pętli póki dzielna nie będzie zerowa;
- zdejmujesz ze stosu wartość (znak reprezentujący cyfrę) i wypisujesz (jako
char
oczywiście) póki nie natrafisz na 0.
0
no tak tylko problem jest bo liczba jest rozbita na dwa rejestry wiec trzeba je oddzielnie traktowac
do tego mamy do dyspozycji tylko 32-bitowe rejestry
0
OK, to teraz spójrz do Intel Software Developer's Manual 2A
, na opis instrukcji div
/idiv
.
0
deus napisał(a)
OK, to teraz spójrz do
Intel Software Developer's Manual 2A
, na opis instrukcjidiv
/idiv
.
?
Jak w EDX:EAX mam maksymalna liczbe 2^64 - 1 = 1844674407370955161 i podziele ja przez 10 wyjdzie 1844674407370955161 a tyle nie zmiesci sie w rejestrze 32-bitowym