PHP

Aus C64-Wiki
Zur Navigation springenZur Suche springen
Mnemonic: 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

Ass befehl 08.gif

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? 

Beispielprogramme