Tak jak napisałem w temacie szukam takiego programu który by zamieniał bcd na heksadowolnej długości słowa.program ten mam napisać w asemblerze na mk 8051 .Przyjmę wszystkie projekty tylko napiszcie na jaki asembler ma on chodzić.
za pomoc dzia
Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięprogram zamiany kodu bcd na szesnastkowy
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
Czepiacie się. Temat jest podany wystarczająco dokładnie. Chodzi o konwersję liczby w BCD na wartość w hex (z wykorzystaniem wszystkich bitów). Czyli np. 548 = 010101001000 - BCD na 1000100100 - HEX. Procedura realizująca konwersję ma mieć charakter ogólny, bez ograniczeń do np. 5 bajtów. Panowie, do dzieła ....
prompt napisał to o co mi chodziło,jak możecie to dajcie wskazówki gdzie taki program znależć , a jak go macie to przyślijcie na poczte nidzgor1@wp.pl program ten jest mi pilnie potrzebny .nie jestem za dobry z cyfrówki i mk za gotowe rozwiązania z góry dzia
pozdro krzyś
pozdro krzyś
Ano dziesiec bitow z trzema zapalonymi: 512+32+4.
Co do programu, to ja bym zapisywal liczbe (i BCD i binarna - to chyba wlasciwa nazwa) jako ciag kolejnych bajtow w pamieci.
1) Dwa takie ciagi binarne mozna na przyklad zsumowac - tak jak liczylismy slupki w podstawowce.
2) Ciag binarny latwo pomnozyc przez 2 - robimy przesuniecie binarne dla kazdego bajtu, przy czym najstarszy bit kazdego bajtu trzeba(?) oddzielna instrukcja wpisac w najmlodszy bit starszego sasiada:
00000000 11001100 01001001
->
00000001 10011000 10010010
3) Przyda sie tez mnozenie przez 5. Po wykonaniu procedur dla 1 i 2 wystarczy do liczby L dodac 2*2*L (pkt 1 i 2)
Wlasciwy algorytm wygladal by jakos tak:
a) rezerwacja miejsca na liczbe binarna i wypelnienie zerami (mozna wziac tyle samo miejsca ile zajmuje liczba BCD)
b) dla kazdego bajtu liczby BCD w kolejnosci od najstarszego wykonaj kroki c i d:
c) zamien bajt na kod binarny i dodaj do liczby binarnej,
d) pomnoz liczbe binarna przez 100: L=L*2*2*5*5 (krok nalezy pominac przy obrabianiu ostatniego bajtu).
Algorytm przy dobrym zakodowaniu bedzie mial zlozonosc kwadratowa, t.zn. liczba wykonanych instrukcji bedzie proporcjonalna do kwadratu dlugosci liczby wejsciowej.
Co do programu, to ja bym zapisywal liczbe (i BCD i binarna - to chyba wlasciwa nazwa) jako ciag kolejnych bajtow w pamieci.
1) Dwa takie ciagi binarne mozna na przyklad zsumowac - tak jak liczylismy slupki w podstawowce.
2) Ciag binarny latwo pomnozyc przez 2 - robimy przesuniecie binarne dla kazdego bajtu, przy czym najstarszy bit kazdego bajtu trzeba(?) oddzielna instrukcja wpisac w najmlodszy bit starszego sasiada:
00000000 11001100 01001001
->
00000001 10011000 10010010
3) Przyda sie tez mnozenie przez 5. Po wykonaniu procedur dla 1 i 2 wystarczy do liczby L dodac 2*2*L (pkt 1 i 2)
Wlasciwy algorytm wygladal by jakos tak:
a) rezerwacja miejsca na liczbe binarna i wypelnienie zerami (mozna wziac tyle samo miejsca ile zajmuje liczba BCD)
b) dla kazdego bajtu liczby BCD w kolejnosci od najstarszego wykonaj kroki c i d:
c) zamien bajt na kod binarny i dodaj do liczby binarnej,
d) pomnoz liczbe binarna przez 100: L=L*2*2*5*5 (krok nalezy pominac przy obrabianiu ostatniego bajtu).
Algorytm przy dobrym zakodowaniu bedzie mial zlozonosc kwadratowa, t.zn. liczba wykonanych instrukcji bedzie proporcjonalna do kwadratu dlugosci liczby wejsciowej.
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 30 gości