05-04-2012, 13:22
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
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

