; ADDSP / SUBSP ; déplace le sommet de la pile (Stack Pointer) ; ; ADDSP ; sert à désempiler ; ; ajoute une valeur au contenu du pointeur de pile ; ; si la valeur est positive, le sommet de la pile (SP) est déplacé vers le bas ; ; code instruction: 01100aaa, (aaa:mode d'adressage 000 à 111) hexa:60 à 67 ; ; SUBSP ; sert à empiler ; ; soustrait une valeur au contenu du pointeur de pile ; ; si la valeur est positive, le sommet de la pile (SP) est déplacé vers le haut ; ; code instruction: 01101aaa, (aaa:mode d'adressage 000 à 111) hexa:68 à 6F ; LDA 1,i ; test LDX 2,i ; test CALL routine ; empile la valeur du compteur ordinal et place l'adresse de "routine" dans ; ; le compteur ordinal, transférant ainsi le contrôle à la première instruction du sous-programme STOP ; sauveA: .EQUATE 0 ; #2h pour y sauver le registre Accumulateur sauveX: .EQUATE 2 ; #2h pour y sauver le registre indeX variabl1:.EQUATE 4 ; #2d donnée temporaire variabl2:.EQUATE 6 ; #2d donnée temporaire ; routine: SUBSP 8,i ; pour empiler #variabl2 #variabl1 #sauveX #sauveA ; STA sauveA,s ; sauvegarde du registre Accumulateur STX sauveX,s ; sauvegarde du registre indeX ; ; traitement ; LDA sauveA,s ; restaure du registre Accumulateur LDX sauveX,s ; restaure du registre indeX ; ADDSP 8,i ; pour désempiler #variabl2 #variabl1 #sauveX #sauveA ; RET0 ; donne au compteur ordinal la valeur du nouveau sommet de la pile qui est alors désempilée. ; ; Tous les TEMOINS sont affectés par ADDSP/SUBSP. ; .END