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.