www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 24bit Multiplikation


Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich will zwei 24bit werte in einem Atmega16 multiplizieren. Da ja die 
Multiplikation mit 8bit schon vorgesehen ist, kann man die 24bit 
Multiplikation ja darauf zurückführen, genauso wie man es auch für 
16bit-Werte macht.
Ich bin mir jetzt nur etwas unsicher in welcher Reihenfolge ich die 
Bytes multiplizieren und addieren muss, um zum richtigen Ergebnis zu 
kommen. Eigentlich dachte ich, dass es im Prinzip genauso ging wie im 
Dezimalsystem, nur das das Beispiel was ich für die 16bit-Mutiplikation 
gefunden habe meiner Meinung nach davon abweicht (vielleicht liege ich 
da auch falsch).

Es gibt doch bestimmt schon jede Menge Leute die 24bit-Werte 
multipliziert haben, vielleicht kann mir ja einer von denen in Form 
eines Beispiels helfen?!

Grüße
Andreas

Autor: Stef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, ich wuerde auch mal schauen wie die 8x8 geht, wie die 24x24 gehen 
sollte, wund dann herausfinden wie ich die 8x8 zu 24x24 zusammensetzen 
muesste.

Autor: daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du musst nur jedes Register mit jedem multiplizieren (also 9 mal) und 
das ergebniss in deine Ergebnissregister kopieren bzw addieren (wie das 
Distributivgest). Achtung, mal ohne oder mit Carry wenn ein übertrag 
entstehen könnte. Du brauchst 6 Register für dein Ergebnis. Die 
Reihenfolge ist übrigens egal, da die Addition kommutativ ist.

Autor: daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
faktor 1: r2:r4
faktor 2: r5:r7
produkt : r8:r13
r14=0

mul r2,r5
mov r8,r0
mov r9,r1

mul r2,r6
add r9,r0
adc r10,r1
adc r11,r14

mul r2,r7
add r10,r0
adc r11,r1
adc r12,r14

mul r3,r5
add r9,r0
adc r10,r1
adc r11,r14

mul r3,r6
add r10,r0
adc r11,r1
adc r12,r14

mul r3,r7
add r11,r0
adc r12,r1
adc r13,r14

mul r4,r5
add r10,r0
adc r11,r1
adc r12,r14
adc r13,r14

mul r4,r6
add r11,r0
adc r12.r1
adc r13,r14

mul r5,r7
add r12,r0
adc r13,r1


die addition von r14 dient nur zur addition des carry-flags
am anfang kann man das auch manchmal noch weglassen

ich hoffe, ich habe mich nicht verschrieben

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Daniel,
dann geht es ja doch 100%tig genauso wie schriftliches multiplizieren!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.