[ASM] Liczba 2 bajtowa na 2 liczby bajtowe

0

Robie w Asemblerze na mikrokontrolerze 8051. Tam są liczby 1 bajtowe (nie 4 bajtowe) i mam mały problem. Otóż po mnożeniu mam liczbe podzieloną na dwa bajty. Pytanie jak zrobić, aby w jednym bajcie były cyfry i dziesiątki, a w drugim reszta? Zaznaczam, że moje mnożenie to max 99x99=9801, więc zawsze będą to 2 liczby dwucyfrowe.

Napisze to inaczej:
Mam JEDNĄ LICZBE DWU BAJTOWĄ, a chce mieć DWIE LICZBY BAJTOWE. Z tym, że w jednej liczbie mają być cyfry dziesiątek i jedności, a w drugim reszta. Przykłąd: 9801 (dwubajtowa) chce zamienić na 98 i 01.

00100110 01001001
Ta liczba interpretowana dwu-bajtowo to 9801. Natomiast interpretowana bajtowo, to są liczby 38 i 73. Pytanie jak zrobić coś takiego z tych dwóch liczb:
01100010 00000001
ew. może być od razu na BCD.

0

Jedyne na co wpadlem tak na szybko (czyli jest to na pewno nie najlepsze rozwiazanie i nie optymlane) to zastapic mnozenie petla dodajaca, w ktorej monitorowalbys wartosc mlodszego bajtu. Gdy osiagnie ona wartosc >= 100, wtedy dzielisz ja przez 100, wynik (liczbe setek) dodajesz do gornego bajtu, a reszte z dzielenia (czyli liczbe dziesiatek i jednosci) wpisujesz jak obecna wartosc dolnego bajtu. Podkreslam, ze raczej napewne istnieje rozwiazanie lepsze i optymalniejsze.

0

Wynik mnożenia podziel przez 100. Reszta to jeden z bajtów, który cię interesuje, iloraz to drugi.

0

Szczawik: zapomniałeś o jednym. Ja widze te 2 bajty jak 2 liczby, a nie jak jedną. Więc jeśli podziele przez 100 jedną liczbe, to nic mi nie da. To tak jakby chciał podzielić 73 przez 100.

0

rozpisz se to jako (B*256 + A) / 100 wyjdzie Ci kilka obrotow i dzielen ale bedziesz mial wynik, jak Ci zalezy na wyniku w BCD to jak "ochlone" to Ci napisze, alre to moze ptrwacc :-/

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