Hallo, ich will zwei 24bit werte in einem Atmega16 multiplizieren. Da ja die Multiplikation mit 8bit schon vorgesehen ist, kann man die 24bit Multiplikation ja darauf zurückführen, genauso wie man es auch für 16bit-Werte macht. Ich bin mir jetzt nur etwas unsicher in welcher Reihenfolge ich die Bytes multiplizieren und addieren muss, um zum richtigen Ergebnis zu kommen. Eigentlich dachte ich, dass es im Prinzip genauso ging wie im Dezimalsystem, nur das das Beispiel was ich für die 16bit-Mutiplikation gefunden habe meiner Meinung nach davon abweicht (vielleicht liege ich da auch falsch). Es gibt doch bestimmt schon jede Menge Leute die 24bit-Werte multipliziert haben, vielleicht kann mir ja einer von denen in Form eines Beispiels helfen?! Grüße Andreas
Ja, ich wuerde auch mal schauen wie die 8x8 geht, wie die 24x24 gehen sollte, wund dann herausfinden wie ich die 8x8 zu 24x24 zusammensetzen muesste.
du musst nur jedes Register mit jedem multiplizieren (also 9 mal) und das ergebniss in deine Ergebnissregister kopieren bzw addieren (wie das Distributivgest). Achtung, mal ohne oder mit Carry wenn ein übertrag entstehen könnte. Du brauchst 6 Register für dein Ergebnis. Die Reihenfolge ist übrigens egal, da die Addition kommutativ ist.
faktor 1: r2:r4 faktor 2: r5:r7 produkt : r8:r13 r14=0 mul r2,r5 mov r8,r0 mov r9,r1 mul r2,r6 add r9,r0 adc r10,r1 adc r11,r14 mul r2,r7 add r10,r0 adc r11,r1 adc r12,r14 mul r3,r5 add r9,r0 adc r10,r1 adc r11,r14 mul r3,r6 add r10,r0 adc r11,r1 adc r12,r14 mul r3,r7 add r11,r0 adc r12,r1 adc r13,r14 mul r4,r5 add r10,r0 adc r11,r1 adc r12,r14 adc r13,r14 mul r4,r6 add r11,r0 adc r12.r1 adc r13,r14 mul r5,r7 add r12,r0 adc r13,r1 die addition von r14 dient nur zur addition des carry-flags am anfang kann man das auch manchmal noch weglassen ich hoffe, ich habe mich nicht verschrieben
Danke Daniel, dann geht es ja doch 100%tig genauso wie schriftliches multiplizieren!
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.