Multiplikation mit dezimal 10

Gast #337548
Lesenswert?
• ▲
▼
Hallo,

seit ein paar Stunden versuche ich eine 16 Bit Zahl mit der dezimalen
10 in Assembler zu multiplizieren. Als Ergebnis erhalte ich folgendes:

- bin_high x 10 = h_high und h_low

- bin_low  x 10 = l_high und l_low

Wie kann ich jetzt die 4 x 8 Bit Ergebnisse verkuppeln?

Hat einer eine simple Idee, wofür ich mich im Voraus bedanke möchte.

MFG

Franz
#337549
Lesenswert?
• ▲
▼
* Kannst du eine 16 Bit Zahl um 1 Bit nach links verschieben?
  ( = identisch zu: Multiplikation *2)
* Kannst du 16 Bit addieren?

Dann ist eine Multiplikation * 10:

  nach links schieben        ( = *2 )
  nach links schieben        ( = *4 )
  Original Zahl addieren     ( = *5 )
  nach links schieben        ( = *10 )
#337551
Lesenswert?
• ▲
▼
Sofern der verwendete Prozessor keinen Hardwaremultiplizierer hat musst
wohl einmal mit 8 und einmal mit 2 multiplizieren (bzw shiften) und die
beiden Ergebnisse aufaddieren.

Ansonsten schau dir mal ein paar AN's über Multiplikationsroutinen an.
(google z.B. nach "avr asm multiplication AN")Gruß
Roland

Antwort schreiben

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.

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.