To forum używa plików cookies
To forum wykorzystuje pliki cookies do przechowywania informacji o Twoim logowaniu, jeśli jesteś zarejestrowany, oraz informacji o Twojej ostatniej wizycie, jeśli nie jesteś zalogowany. Pliki cookies to niewielkie pliki tekstowe zapisywane na Twoim komputerze; cookies ustawiane przez to forum mogą być używane wyłącznie na tej stronie i nie stanowią zagrożenia dla bezpieczeństwa. Cookies na tym forum śledzą również, które tematy zostały przez Ciebie przeczytane oraz kiedy miało to miejsce. Prosimy o potwierdzenie, czy akceptujesz, czy odrzucasz zapisywanie tych plików cookies.

Niezależnie od wyboru w Twojej przeglądarce zostanie zapisany plik cookie, aby zapobiec ponownemu zadawaniu tego pytania. W każdej chwili będziesz mógł zmienić ustawienia cookies, korzystając z linku w stopce strony.

Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Dzielenie ASM Atmega32 (lub inna Atmega)
#2
Marcin, naukę arytmetyki należałoby rozpocząć od dodawania i odejmowania ponieważ na nich opierają się funkcje mnożenia i dzielenia. Drugi krok to operacje przesuwania w lewo, w prawo a dopiero potem mnożenie i dzielenie.

Procesory AVR nie mają rozkazu dzielenia dlatego musimy zrobić to przy pomocy rozkazów odejmowania. Najprostszy algorytm dzielenia 8-bitowego to odejmowanie w pętli dzielnika od dzielnej i liczenie ilości wykonanych pętli.
Zalety: prosty, krótki kod, szybkie wykonanie przy dużych dzielnikach.
Wady: długi czas obliczeń przy małych dzielnikach.
Lepszą metodą jest algorytm oparty na przesuwaniu w lewo i odejmowaniu. To rozwiązanie stosowane jest w arytmetyce na formatach wielobajtowych 16, 32, 64 bity. Aby zrozumieć filozofię takiego dzielenia najlepiej użyć przykładu dla liczb minimum 16 bitowych (odejmowanie, przesunięcie wielobajtowe). Na bazie takiego algorytmu możemy potem zbudować dzielenie na praktycznie dowolnych formacie danych.

Temat na elektrodzie o dzieleniu na atmega w asm
Źródła procedur DIV8/8, DIV16/8
73 Adam
Cytuj


Wiadomości w tym wątku

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości