PHP
Aus C64-Wiki
Zur Navigation springenZur Suche springenMnemonic: | PHP |
Opcode: | $08 |
Anzahl der Bytes: | 1 |
Befehlsgruppe: | Datentransferbefehl |
Adressierung: | implizit |
Beeinflusste Flags im Statusregister: | |
keine | |
Taktzyklen: | 3 |
Der Assembler-Befehl PHP legt den Inhalt des Statusregisters auf dem Stapel ab. Danach wird der Stapelzeiger (Stackpointer) um 1 verringert (siehe Bild).
Der Programmierer muss darauf achten, dass alle Bytes, die mit PHP während eines Unterprogramms auf den Stapel gelangen, wieder mit dem Befehl PLP, PLA oder durch direkte Manipulation des Stackpointer-Registers entfernt werden, bevor der Rücksprung mittels RTS erfolgt.
Funktionsprinzip
Bedeutung der Buchstaben im Befehl
PHP | PusH Processor Status on Stack |
Statusregister auf den Stapel legen |
Beispiel
Die 4 höchstwertigen Bits im Akkumulator (Bit 4 bis 7) verdoppeln, Ergebnis in Speicherstelle $02 (z.B. um eine Grafik auf doppelt Breite zu bringen)
ldx #4 ; 4 Bits verdoppeln nextbit asl ; Bit 7 des Akku ins Carry-Flag php ; Bit 7 (u.a.) im Carry aufheben rol $02 ; Carry in Bit 0 von Zeropage-Speicherstelle $02 plp ; Bit 7 wieder im Carry herstellen rol $02 ; Carry ein 2. mal übernehmen, ist dann auf Bit 1 und Bit 0 dex ; Bit-Zähler bne nextbit ; alle 4 Bits durch?