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?
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)"
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.