Poprzedni temat «» Następny temat
[asm]Zamiana trzybajtowej liczby dec na hex.
Autor Wiadomość
swiato
Nowy na forum


Dołączył: 07 Lut 2013
Posty: 4
Skąd: Warszawa
Wysłany: 2014-12-29, 08:24   [asm]Zamiana trzybajtowej liczby dec na hex.

Kiedyś, dość dawno temu, udało mi się napisać ręcznie procedurę zamiany dec na hex. Chodziło o wprowadzanie liczby z klawiatury w postaci dziesiętnej i konwertować do szestnastkowej. W moim urządzeniu suport napędzany jest przez śrubę, a jego pozycja zliczana jest impulsami z enkodera w obu kierunkach. Licznik pozycji dodaje i odejmuje w systemie szestnastkowym. Pozycję zadaną wpisuje jako dziesiętną i aby np. zatrzymać suport w zadanej pozycji muszę miec ją w zapisie hex. Niestety i kość z programem i notatki przepadły, a jako człowiek starszy nie mam już takiej lotności umysłu jak wtedy gdy pisałem tą procedurę. Poza tym jak wiadomo LENISTWO JEST RĘKOJMIĄ ZDROWIA. 8051 programować jestem w stanie jedynie w ASM, zatem gdyby ktoś podesłał mi przepis na coś takiego, byłbym bardzo wdzięczny. SWIATO.
 
     
trol.six 
Nowy na forum


Dołączył: 21 Mar 2015
Posty: 2
Skąd: kraków
Wysłany: 2015-03-21, 16:29   

Zasada jest prosta. Dla 16 bitowej liczby w rejestrach L1 L2
1. Zerowanie dwóch rejestrów L1 L2
2. wpisaniu liczby z kalawiatury do rejestru np KLAW
3. mnożeniu przez dziesięć liczby L1 L2
4. dodanie liczby KLAW do L1 L2
jesli mamy następna liczbe z klawiatury ponawiamy kroki 2 3 4

Mamy już liczbe w L1 L2 binarną.
postać binarna to postać prawie szesnastkowa. Kwestia formatu.
Bo liczba L1 to dwie szesnastkowe.

Jeśli mają one mieć postać kodu ASCII czyli znaku 0123456789abcdef
To trzeba je pociąć korzystając np z dodatkowego rejestru TMP

Czyli bierzemy L1 cztery pierwsze bity to pierwsza szesnastka.
TMP = L1
1. TMP & 0x0F zerowanie
2. Dla liczb TMP <= 9 dodajemy znak '0' (zero)
dla reszty dodajemy znak 'a' lub 'A' i odejmujemy 10.
3. mamy pierwszy hex i zpisujemy do H1
Potem górna połówka, najpierw zamiana bitów
TMP = L1
SWAP TMP
I powtarzamy kroki 1 2 3 i mamy H2

potem kolejny bajt L2 itd
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  


Powered by phpBB modified by Przemo © 2003 phpBB Group
Strona wygenerowana w 0,02 sekundy. Zapytań do SQL: 11