Ein Beispiel einer Multiplikation zweier 16 Bit Zahlen, das Ergebnis liegt als 32 Bit -Wert vor. Bernhard
Gast
#371352
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
Gast
#371353
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
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.