Ein Beispiel einer Multiplikation zweier 16 Bit Zahlen, das Ergebnis liegt als 32 Bit -Wert vor. Bernhard
Hmm, geht das nicht einfacher? Gerade der Mega8 hat doch (wie alle anderen Megas auch) einen Multiplizierer für 8-Bit-Operanden und 16-Bit-Ergebnis. Ohne jetzt gleich den Assemblercode vorzustellen (bin eh nicht so arg fit darin), kann man doch theoretisch eine 16x16->32-Multiplikation durch vier 8x8->16-Multiplikationen darstellen: Es sei OP1 = 256 * H1 + L1 OP2 = 256 * H2 + L2 Dann ist ERG = OP1 * OP2 = 65536 H1 H2 + 256 * (H1 * L2 + L1 * H2) + L1 * L2 Dies sollte mit vier 8-Bit-Multiplikationen, ca. acht 8-Bit-Additionen und einigen MOV-Befehlen zu erschlagen sein. Bei deiner bitweisen Methode brauchst du, wenn ich richtig gezählt habe, 64 Additionen und etliche Shift- und MOV-Befehle. yalu
Es gibt übrigends die ganzen Div/Mul Routinen in verschiedensten Varianten (signed/unsigned, Speed/Size optimiert usw) als AppNote bei Atmel...
@Bendikt @yalu > geht das nicht einfacher? >Es gibt übrigends die ganzen Div/Mul Routinen in verschiedensten >Varianten (signed/unsigned, Speed/Size optimiert usw) als AppNote bei >Atmel... http://www.atmel.com/dyn/resources/prod_documents/DOC0936.PDF Bernhard
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.