(0x275) * 1,75 -> 0x276 - PIC 18 Assembler

#2973126
Lesenswert?

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.
Gast #2998823
Lesenswert?

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^^

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