MULTIPLIKATION 16 x 16 = 32BIT Beispiel (Assembler) ATmega8

Gast #371352
Lesenswert?

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

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