Titelbild Mikrocontroller

P-Befehle


oben POP - Pop Register from Stack

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):
ITHSVNZC
--------

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

oben PUSH - PUSH Register on Stack

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):
ITHSVNZC
--------

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

Impressum