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

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