Forum: Mikrocontroller und Digitale Elektronik 16Bit Multiplikation


von Erik (Gast)


Lesenswert?

Hallo..
Ich möchte gern eine 16Bit Zahl mit 2 multiplizieren. Bei 8Bit ist dies
ja  mit einem Linksshift erledigt aber bei 16Bit will es nicht
funktionieren. Habe versucht erst das Register mit den 8 niederen Bits
nach links zu schieben. Vorher hatte ich das Carry Bit gelöscht und
nach dem linksshift das Carry gelesen. Wenn ein überlauf stattgefunden
dann habe ich das Register mit den 8 höherwertigen Bits incrementiert
und danach ebenfalls einen linksshift ausgeführt. Leider kommt als
Ergebnis nur quatsch raus.. ist es überhaupt möglich bei 16Bit werten
mit dieses einfache verfahren anzuwenden ?
Ach ja.. Ich sollte noch dazu sagen, das ich den Wertebereich nicht
voll ausnutze und es zu keinem Überlauf kommen kann. Die werte die mit
2 multiplizieren will liegen im bereich von 0 - 2000.

von C. Lechner (Gast)


Lesenswert?

AFAIK solltest du die höheren 8Bit erst shiften und dann inkrementieren,
auch wenn es dafür sicher einen Spezial Assembler-Befehl (rotate w/
carry) gibt. Ich progge fast nur C, also bin ich da überfragt, aber
andere Architekturen haben sowas auch.

- cl

von C. Lechner (Gast)


Lesenswert?

Also ich denke mal, der Befehl den Du brauchst ist ROL. Aber legt mich
nicht drauf fest.

Siehe auch
http://www.atmel.com/dyn/resources/prod_documents/DOC0856.PDF

von Hartmut Gröger (Gast)


Lesenswert?

Hi

geht ganz einfach:

    lsl lowregister
    rol highregister

  und fertig.

Mfg HG

von Hagen (Gast)


Lesenswert?

oder

add  rl, rl
adc  rh, rh

gruß Hagen

von Erik (Gast)


Lesenswert?

Na klar add kann ich ja auch benutzen...hätt ich ja auch selbst drauf
kommen müssen...Also danke an alle...
Aber eine Frage hätte ich da noch und zwar zu der Antwort von Hartmut.
Er schreibt das man zuerst das lowregister linksschieben soll und
danach das highregister nach rechts.. Warum nach rechts???

von C. Lechner (Gast)


Lesenswert?

Wieso nach rechts?
ROL rotiert doch nach Links ebenso wie LSL nach links shifted.

Ich glaube, Du bist von den Mnemonics verwirrt :)

von Rolf Magnus (Gast)


Lesenswert?

Wo schreibt er das? Ich sehe nur:

lsl lowregister  ; linksschieben
rol highregister ; linksrotieren mit carry

von Erik (Gast)


Lesenswert?

Ja Ok...Ich bin völlig raus.. Hab da grad was völlig durcheinander
gebracht..

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
Noch kein Account? Hier anmelden.