mikrocontroller.net

Forum: Projekte & Code MULTIPLIKATION 16 x 16 = 32BIT Beispiel (Assembler) ATmega8


Autor: Bernhard S. (bernhard)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ein Beispiel einer Multiplikation zweier 16 Bit Zahlen,

das Ergebnis liegt als 32 Bit -Wert vor.



Bernhard

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, geht das nicht einfacher? Gerade der Mega8 hat doch (wie alle
anderen Megas auch) einen Multiplizierer für 8-Bit-Operanden und
16-Bit-Ergebnis. Ohne jetzt gleich den Assemblercode vorzustellen (bin
eh nicht so arg fit darin), kann man doch theoretisch eine
16x16->32-Multiplikation durch vier 8x8->16-Multiplikationen
darstellen:

Es sei
OP1 = 256 * H1 + L1
OP2 = 256 * H2 + L2

Dann ist
ERG = OP1 * OP2 = 65536  H1  H2 + 256 * (H1 * L2 + L1 * H2) + L1 *
L2

Dies sollte mit vier 8-Bit-Multiplikationen, ca. acht 8-Bit-Additionen
und einigen MOV-Befehlen zu erschlagen sein. Bei deiner bitweisen
Methode brauchst du, wenn ich richtig gezählt habe, 64 Additionen und
etliche Shift- und MOV-Befehle.

yalu

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt übrigends die ganzen Div/Mul Routinen in verschiedensten
Varianten (signed/unsigned, Speed/Size optimiert usw) als AppNote bei
Atmel...

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Bendikt

@yalu

> geht das nicht einfacher?

>Es gibt übrigends die ganzen Div/Mul Routinen in verschiedensten
>Varianten (signed/unsigned, Speed/Size optimiert usw) als AppNote bei
>Atmel...

http://www.atmel.com/dyn/resources/prod_documents/...

Bernhard

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.