PLA
Aus C64-Wiki
| Mnemonic: | PLA | ||||||
| 2. Schreibweise: | {{{2. Schreibweise}}} | ||||||
| Opcode: | $68 | ||||||
| Operand(en): | {{{Operand}}} | ||||||
| Anzahl der Bytes: | 1 | ||||||
| Befehlstype: | Datentransfer-Befehl | ||||||
| Adressierung: | implizit | ||||||
| Beeinflusste Flaggen im Statusregister: | |||||||
| Negativ-Flag | |||||||
| Zero-Flag | |||||||
| Taktzyklen: | 4 | ||||||
Der Assembler-Befehl PLA erhöht den Stapelzeiger (Stackpointer) um 1.
Danach wird der Akkumulator mit dem Inhalt der Speicherzelle, auf die der Stapelzeiger (Stackpointer) zeigt, geladen.
Der Programmierer muss darauf achten, daß alle Bytes, die mit PHA während eines Unterprogrammes auf den Stapel
geschoben wurden, wieder mit dem Befehl PLA abgehoben werden müssen, bevor der Rücksprung mittels RTS erfolgt.
Funktionsprinzip
Bedeutung der Buchstaben im Befehl
| PLA | PulL Accumulator from Stack |
| Hole Akkumulator vom Stapel |
Beispiel
; Dieses Programm wartet auf einen Tastendruck.
; Die Register Akku, X und Y werden am Beginn gesichert und am Ende wieder herstellt.
; Programmstart mit SYS 49152
*=$c000 ; Startadresse des Programmes
GETIN = $ffe4
start pha ; Akku am Stapel sichern.
txa
pha ; X-Register am Stapel sichern.
tya
pha ; Y-Register am Stapel sichern.
eingabe jsr GETIN ; Zeichen einlesen (veränderte Register: A, X, Y)
beq eingabe ; warte auf Tastendruck
pla
tay ; Y-Register wiederherstellen
pla
tax ; X-Register wiederherstellen
pla ; Akku wiederherstellen
rts ; Rücksprung ins Basic
.c000 48 pha .c001 8a txa .c002 48 pha .c003 98 tya .c004 48 pha .c005 20 e4 ff jsr $ffe4 .c008 f0 fb beq $c005 .c00a 68 pla .c00b a8 tay .c00c 68 pla .c00d aa tax .c00e 68 pla .c00f 60 rts
Vergleich des Beispielprogramms mit Basic
10 S$=A$ : REM A$ in der Variable S$ sichern 20 GET A$ 30 IF A$="" THEN 20 : REM warte auf Tastendruck ... ... 40 A$=S$ : REM A$ wiederherstellen
