PIC16F1512, Assembler, MPLAB Kann man das folgende Programmstück kürzer/schneller machen? Das Ziel ist: w = gnn + 32 - nnn, ohne nnn zu ändern. movfw gnn addlw d'32' ; w= gnn+32 movwf hilfe ; hilfe = gnn+d'32' movfw nnn ; w = nnn subwf hilfe,w ; w = hilfe - w: Ergebnis w = gnn+32-nnn Für Ideen wäre ich dankbar!
:
Bearbeitet durch User
Könntest das Ganze über direkte Adressierung machen:
1 | |
2 | movlw gnn ; W = Adresse von gnn |
3 | addlw d'32' ; W = Adresse von gnn + 32 |
4 | movwf fsr0h ; FSR0H = oberes Byte der Adresse |
5 | movf nnn,f ; W = Inhalt von nnn |
6 | subwf indf0,w ; W = Inhalt von (gnn + 32) - Inhalt von nnn |
Vielen Dank für Deine Idee. Sehe ich das richtig, dass im Endeffekt ebenfalls 5 Befehle notwendig sind und somit nichts erspart/schneller wird?
Sorry! Doch, es wird etwas erspart, nämlich das Register "hilfe"!
Hallo peda, die Lösung ist ganz wunderbar und lehrt, dass man das Kommutativgesetz der Mathematik immer berücksichtigen sollte! Perfekt!!!! "nnn" sowie "gnn" bleiben hierbei unverändert und das Register "hilfe" ist auch noch eingespart!! Herzlichen Dank für Deine Mühe!
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.