24bit/16bit Divisionroutine in Assembler

Persönliche Seite #2790531
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)"
#2791166
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
#2791189
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren