[Asm] Wypis liczby 64-bitowej

0

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

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 instrukcji div/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

1 użytkowników online, w tym zalogowanych: 0, gości: 1