Re: zamiana dec na hex bez dzielenia



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: Wojciech Piechowski <wojt_at_nospam_gnu.univ.gda.pl>
Subject: Re: zamiana dec na hex bez dzielenia
Date: Mon, 19 Mar 2001 11:26:21 +0100


On Sun, 18 Mar 2001, Juliusz wrote:

Witam.

Jak robicie koledzy zamiane liczby dziesietnej, z przedzialu 0-255,
siedzacej w 3 rejestrach AVR'a na bajt ?

Chodzi mi o mozliwie optymalny kod pod wzgledem ilosci uzytych rozkazow
assemblerowych.

Jak chcesz zminimalizowac ilosc zuzytych slow, to nie pomoge, bo nie znam
AVR, ale jesli chodzi o szybkosc wykonania, to cos takiego proponuje:

zakladam, ze liczba jest w r0 (setki), r1 (dziesiatki) i r2 (jednostki)

dwie tablice:
T0 = [0,100,200]
T1 = [0,10,20,...,90]

wynik = T0[r0] + T1[r1] + r2

czyli zadnego mnozenia, 3 dodawania (moze 5, jesli AVR nie ma
odpowiedniego trybu adresowania). Pod wzgledem ilosci kodu powinno wypasc
calkiem niezle, tylko te tablice gdzes trzeba upchnac

--
-- Wojciech Piechowski - wpiechowski_at_nospam_acm.org - Gadu-Gadu 494156 --


Poprzedni Następny
Wiadomość
Spis treści
From: "Juliusz" <jul_at_nospam_fom.pl>
Subject: Re: zamiana dec na hex bez dzielenia
Date: Mon, 19 Mar 2001 12:54:43 +0100


dwie tablice:
T0 = [0,100,200]
T1 = [0,10,20,...,90]

wynik = T0[r0] + T1[r1] + r2

czyli zadnego mnozenia, 3 dodawania (moze 5, jesli AVR nie ma
odpowiedniego trybu adresowania). Pod wzgledem ilosci kodu powinno wypasc
calkiem niezle, tylko te tablice gdzes trzeba upchnac

Ja po prostu pytam o to, bo moze sie ktos jakas chytroscia weza wykazal i ma
jakis sposob mniej lub bardziej elegancki ale z minimalna iloscia bajtow.
Procek to 2313 i zabraklo mi w nim miejsca. Nie chodzi tu zupelnie o czas
wykonywania i wlasciwie metode tablicowa to wlasnie mam. Korzystajac z
EEPROM'u przepisuje ja do ramu kiedy akurat wolam ta procedure ale to i tak
zajmuje kupe miejsca, bo samo przeliczanie tego to nie tylko kilka dodawan,
jeszcze jest cala otoczka tego.

Juliusz




Poprzedni Następny
Wiadomość
Spis treści
From: "Irek K." <ixkuczek_at_nospam_friko6.onet.pl>
Subject: Re: zamiana dec na hex bez dzielenia
Date: Mon, 19 Mar 2001 13:42:10 +0100


Juliusz wrote:

dwie tablice:
T0 = [0,100,200]
T1 = [0,10,20,...,90]

wynik = T0[r0] + T1[r1] + r2

czyli zadnego mnozenia, 3 dodawania (moze 5, jesli AVR nie ma
odpowiedniego trybu adresowania). Pod wzgledem ilosci kodu powinno wypasc
calkiem niezle, tylko te tablice gdzes trzeba upchnac

Ja po prostu pytam o to, bo moze sie ktos jakas chytroscia weza wykazal i ma
jakis sposob mniej lub bardziej elegancki ale z minimalna iloscia bajtow.
Procek to 2313 i zabraklo mi w nim miejsca. Nie chodzi tu zupelnie o czas
wykonywania i wlasciwie metode tablicowa to wlasnie mam. Korzystajac z
EEPROM'u przepisuje ja do ramu kiedy akurat wolam ta procedure ale to i tak
zajmuje kupe miejsca, bo samo przeliczanie tego to nie tylko kilka dodawan,
jeszcze jest cala otoczka tego.

Juliusz

To nie przeliczaj tylko zliczaj:
Liczbe hex incrementuj a dec dekrementuj tyle az dec dojdzie do zera.
Trochę to trwa. Nie zastanawiałem ile toz zajmnie na 2313 ale
na 6502 to bajka.

Irek

Irek