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
* 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 )
Hi, wenn es nur um die Multiplikation mit 10 geht, würde ich es eher mit Bit-Shift und Addition lösen. Also um 1 und 3 Bit shiften und addieren. Gruß, Detlev
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
@Franz: Erklär doch bitte mal genau, was du verwendest (Controller, Typ, Bitbreite) und was du haben möchtest. Gruß Dietmar
Hallo, Controller ist ATMEGA8515, 8Bit. Ausgangslage: 12 bit Zahl Multiplaktion mit dezimal 10 Haben möchte ich eine Zahl, dass sich in zwei Registern findet. Gruß Franz
@Karl Heinz, vielen Dank für den Tip. Das war genau richtig, einfach und simpel. Gruß Franz
Beispiel: dez: 4077*10=40770 hex: 0FED*0A=9F42 Rechnung mit 2 MULs und 2 ADDs (16x8 --> 24 Bit) ED*0A= 0942 0F *0A=0096 ======== 009F42 wenn Du nur 12x4->16 Bit rechnest, reicht ein ADD. Siehe Threads Rechnen mit AVR http://www.mikrocontroller.net/forum/read-1-343046.html und Multiplikation http://www.mikrocontroller.net/forum/read-1-288423.html
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.