Multiplikation 2*16 Bit
-
Hallo
Habe da eine Aufgabe aus der Schule, bei der ich nicht ganz durchblicke.
Wir arbeiten mit einem 8Bit Prozessor (8031/8051).
Es sollen jetzt zwei 16Bit-Zahlen miteinander multipliziert werden.Angabe ist Folgendes:
Wert1L Wert1H Wert2L Wert2H
Eins ist klar das Ergebnis muss, meiner Meinung nach so, aussehen:
erg3 erg2 erg1 erg0
, also 4 *8 Bit
Aber wie geht jetzt die Multiplikation ?
Hat jemand eine Idee ?
Danke
-
signed oder unsigned multiplication?
-
unsigned
-
machs doch wie bei der schriftlichen multiplikation. also ziffer für ziffer (in diesem fall byte für byte) multiplizieren und dann die ergebnisse versetzt addieren. beim addieren musst du dann noch aufs carry-flag achten. wenn es gesetzt ist musst du das jeweils höhere byte um 1 erhöhen.
cu todo
-
Du kannst auch (so hab ichs beim Z80 gemacht), über shifts bits des einen Regs in Cary schieben, und dann einfach passend shiften, und addieren.
Habe das allerdings als 8bit multiplikation auf ner 8bit CPU entwickelt.
mfg
-bg-
-
Ja, das mit dem "ins Carry schieben" funktioniert auch mit den 16 Bit, so kriegt man die ganze Bitschlange einfach Stück für stück ins nächste Register.