wie geht Multiplizieren mit Hardware?

Gast #69064
Hallo liebes Forum,

ist hier jemand, der die App Note des AVR in Bezug auf die Hardware
Multiplizierung
mal verständlich erklären kann? Ich hab wohl in der Schule nicht
aufgepasst!
Um eine Ausgabe auf LCD anzupassen versuche ich den ADC Wert mit 19 zu
multiplizieren
und hinterher mit 16 (weil es so schön durch schieben geht) zu
dividieren.
Nun hab ichs versucht, wie man es dezimal macht:

z.B.  25 X 5 = 125     -> 5 X 5 = 25   +   20 X 5 = 100 ist zusammen 125
! ->stimmt

in Hex umgesetzt funktioniert meine Routine nich!

Hier im Forum steht ja z.B. "Schau in die Codesammlung 8X16 bit"
Die Suchfunktion zeigt mir aber nichts. (Kann sein, dass ich auch zum
Suchen zu blöd bin
- dann lasst mich halt einfach doof sterben) ansonsten schon mal Danke
für eine Aufklärung.

Gruss Holger
Angehängte Dateien:
Gast #69065
Hallo Holger,

die Multiplikation ist so schon in Ordnung, aber die Addition der
Teilergebnisse am Ende der Routine ist falsch. Du berücksichtigst den
Übertrag nicht ($F6 + $1E = $14 + Carry Flag).

Gruß, Frank
Gast #69067
Dein Fehler ist, dass Du nicht stellenrichtig addierst. Die $03 x $0A
sind bei der Multiplikation zwar $1E, müssen aber als $1E00 in die
Addition eingehen.

Gruß, Frank
Gast #69068
Das Problem ist: Dein Ergebnis ist 24 Bit breit!
Probier mal folgendes:

;******************************************************************
mul  Lbyte, fakt    ;Low Byte x Faktor
mov  r24,  r0    ;Ergebnis in ZRP sichern
mov  r25,  r1
mov     r26,#0

mul  Hbyte,  fakt    ;High Byte x Faktor
add  r25,  r0    ;Ergebnis zu Erg. der ersten
adc  r26,  r1    ;Multiplikation addieren

;Ergebnis in R24 (low bis R26 (hi)

Stefan
Gast #69069
Danke Euch!!!

Die Idee mit dem Stellenrichtigen addieren hätte mir auch kommen
können. Manchmal hat mann eben Brett vor Kopf ! Autsch!

Jetzt funktionierts.

Gruss Holger

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.