Koleżankom i Kolegom Radioamatorom, Krótkofalowcom,
Konstruktorom i Waszym Rodzinom – w tych trudnych czasach –
po dotkliwej awarii naszego forum
Pogodnego czasu po Bożym Narodzeniu,
Dosiego Nowego Roku
oraz Radosnych Trzech Króli

Życzy Zespół Home Made

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
Odpowiedz


Wiadomości w tym wątku

Skocz do:


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