Ich soll den Inhalt bei der Adresse 0x275 mit 1,75 mult. und dann in die Adresse 0x276 speichern. Ist mein Code richtig? Ich multiplieziere mit 7 und schiffte dann 2 mal nach rechts. MOVLW 0x07 MOVLB 0x02 RRNCF 0x75,1,1 RRNCF 0x75,1,1 MULWF 0x75,1 MOVF 0x76 danke
Jimmy schrieb: > Ich multipliziere mit 7 und shifte dann 2 mal nach rechts. Das ist im Prinzip richtig. Der ASM-Code macht aber was ganz anderes als geplant und wird deshalb so nicht funktionieren. > MOVLW 0x07 > MOVLB 0x02 > RRNCF 0x75,1,1 > RRNCF 0x75,1,1 Es war doch die Rede von erst multiplizieren und dann schieben. > MULWF 0x75,1 > MOVF 0x76 Das Ergebnis (16 Bit) steht in den PRODL und PRODH Registern, da nutzt das Speichern von wreg nix. Mein Favorit wäre: MOVFF 0x275,WREG MULLW 7 RRNCF PRODH,f RRCF PRODL,f RRNCF PRODH,f RRCF PRODL,f MOVFF PRODL,0x276 Dauert halt durch die 16 Bit Schieberei etwas länger, dafür kann man aber auch Werte über 36 verarbeiten, die sonst zu einem fehlerhaften Ergebnis führen würden.
auch wenn es schon lange her ist, vielen danke für die Lösung. hab das mit dem PRODH und RPODL einfach nicht kappiert. jetzt klappt es so langsam. danke nochmal für die Mühe. Ich hab den code soeben getestet und funktioniert^^
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.