Forum: Mikrocontroller und Digitale Elektronik 24bit/16bit Divisionroutine in Assembler


von Alex (Gast)


Lesenswert?

Hallo, ich suche nach einer 24bit/16bit Divisionroutine in Assembler. Es 
soll nur einfache Register r0-r15 genutzt. In Google finde ich nichts.
Hat jemand vielleich Qullkode?

von Michael (Gast)


Lesenswert?

Schau mal hier:
Beitrag "Division von STD_LOGIC_VECTOR"
Das geht auch in ASM

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

In [1] ist eine 16/8 Division mit Rest.  Das von 16/8 auf 24/16 zu 
erweitern ist trivial:  bei Dividend, Divisor, Quotient und Rest kommt 
eben 1 Byte hinzu.

Ausserdem geht der Algorithmus davon aus, daß das MSB des Divisors 0 
ist.  War in dem Beitrag bekannt.  Erweiterung für Divisoren mit MSB = 1 
erfordert 2 zusätzliche Befehle (Hausaufgabe).

Beitrag "Re: 16-Bit Zahl durch eine Konstante dividieren (Assembler)"

von Jobst M. (jobstens-de)


Lesenswert?

http://elm-chan.org/cc_e.html#avrasm

Muss man evtl. ein wenig anpassen ...


Gruß

Jobst

von Axel S. (a-za-z0-9)


Lesenswert?

Alex schrieb:

> Hallo, ich suche nach einer 24bit/16bit Divisionroutine in Assembler.

Atmel Appnote AVR200 hat Divisionsroutinen in verschiedenen Breiten. 
Wenn du die erstmal verstanden hast, kannst du beliebige Breite 
implementieren.

> Es soll nur einfache Register r0-r15 genutzt.

PUSH/POP existieren. Oft ist es notwendig/sinnvoll, das Z-Register 
freizuräumen und im Algo zu benutzen.


XL

von Peter D. (peda)


Lesenswert?

Axel Schwenke schrieb:
>> Es soll nur einfache Register r0-r15 genutzt.
>
> PUSH/POP existieren. Oft ist es notwendig/sinnvoll, das Z-Register
> freizuräumen und im Algo zu benutzen.

Im Code schreibt man auch nie feste Register hin, sondern benutzt 
Definitionen (Register-Renaming).
Z.B. benutze ich A0..n für den ersten Operanden, B0..n für den 2., T0..n 
für Zwischenwerte, I0..n für Loop-Counter.
Welche Register das dann wirklich sind, legt man zentral für das Projekt 
fest.


Peter

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

http://www.mikrocontroller.net/articles/AVR_Arithmetik#Weblinks

wenn es um AVR Assembler geht, das ist oben nicht klar zu sehen.
die gute alte  Math32-Bibliothek von Andre Birua (von 2003) ist immer 
noch zu finden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.