Syntax: |
POP Rd
|
Funktion: |
Dieser Befehl lädt das Register Rd mit einem Byte aus dem Stack. Der Stack-Pointer
wird vor der Ausführung des Befehls um 1 erhöht, weil er immer auf die nächste zu
beschreibende Speicherzelle zeigt und nicht auf die zuletzt beschriebene Zelle.
Der Befehl ist nicht in allen Bausteinen verfügbar.
|
Operation: |
Rd ← STACK, SP ← SP + 1
|
Operanden: |
0 ≤ d ≤ 31
|
Programmzähler: |
PC ← PC + 1
|
Words: |
1 (2 Byte)
|
Zyklen: |
2
|
16 Bit Operations Code: |
1001 000d dddd 1111
|
Flags im Status-Register (SREG):
Beispiel:
call sprung ;Unterprogramm ab Label sprung aufrufen
sprung:
push r3 ;R3 in Stack sichern
push r4 ;R4 in Stack sichern
... ;das eigentliche Unterprogramm
pop r4 ;Alten Wert von R4 aus dem Stack zurückholen
pop r3 ;Alten Wert von R3 aus dem Stack zurückholen
ret ;Rücksprung
Syntax: |
PUSH Rr
|
Funktion: |
Dieser Befehl speichert das Register Rd in den Stack. Der Stack-Pointer wird nach der
Ausführung des Befehls um 1 verringert und zeigt dann auf die nächste zu
beschreibende Speicherzelle.
Der Befehl ist nicht in allen Bausteinen verfügbar.
|
Operation: |
STACK ← Rr, SP ← SP - 1
|
Operanden: |
0 ≤ d ≤ 31, 0 ≤ r ≤ 31
|
Programmzähler: |
PC ← PC + 1
|
Words: |
1 (2 Byte)
|
Zyklen: |
2
|
16 Bit Operations Code: |
1001 001d dddd 1111
|
Flags im Status-Register (SREG):
Beispiel:
call sprung ;Unterprogramm ab Label sprung aufrufen
sprung:
push r3 ;R3 in Stack sichern
push r4 ;R4 in Stack sichern
... ;das eigentliche Unterprogramm
pop r4 ;Alten Wert von R4 aus dem Stack zurückholen
pop r3 ;Alten Wert von R3 aus dem Stack zurückholen
ret ;Rücksprung