Instructions
MnémoniqueMnémonique franciséExplicationAlgorithme
WR x riécrit x ri Initialise le registre i avec la valeur x. ri ← x
MOV i rjcopie i rj Charge dans le registre j, le contenu de la mémoire d'adresse i. rj ← mem(i)
MOV ri jcopie ri j Écrit le contenu du registre i dans la mémoire d’adresse j. mem(j) ← ri
NEG rineg ri Calcule la négation du contenu du registre i. ri ← − ri
ADD ri rjadd ri rj Ajoute la valeur du registre i à celle du registre j. rj ← ri + rj
SUB ri rjsoust ri rj Soustrait la valeur du registre i à celle du registre j. rj ← rj − ri
MUL, DIVmult, div Même syntaxe que pour add et soust mais pour la multiplication et la division rj ← rj * ri ou rj ← rj / ri
INC riinc ri Incrémente d'un la valeur du registre i. ri ← ri + 1
JMP isaut i Met le compteur à la valeur i. La prochaine instruction exécuté sera celle inscrite à l'emplacement i de la mémoire. CP ← i
JP ri jsautpos ri j Si la valeur contenue dans le registre i est positive ou nulle, met le compteur à la valeur j. si ri ≥ 0 : CP ← j
sinon CP ← CP+1
STOPstop Arrête l'exécution du programme.
Instructions étendues
MnémoniqueMnémonique franciséExplicationAlgorithme
MOV ri rjcopie ri rj Écrit le contenu du registre i dans le registre j. rj ← ri
MOV ri *rjcopie ri *rj Écrit le contenu du registre i dans la mémoire dont l’adresse est la valeur du registre j. mem(rj) ← ri
MOV *ri rjcopie *ri rj Charge dans le registre j, le contenu de la mémoire dont l’adresse est la valeur du registre i. rj ← mem(ri)
QDV ri rjquotient ri rj Quotient de la division de la valeur du registre j par celle du registre i. (division entière) rj ← rj // ri
MOD ri rjmod ri rj Reste de la division de la valeur du registre j par celle du registre i. (division entière) rj ← rj % ri
ADD x riadd x ri Ajoute x à celle du registre i. ri ← ri + x
MUL, DIV, SUB, QDV, MOD mult, div, soust, quotient, mod Même syntaxe que pour add mais pour la multiplication, la division, la soustraction, la division entière et le modulo. rj ← rj (*, /, −, //, %) x
JZ ri jsautnul ri j Si la valeur contenue dans le registre i est nulle, met le compteur à la valeur j. si ri = 0 : CP ← j
sinon CP ← CP+1
JNZ ri j sautnonnul ri j Si la valeur contenue dans le registre i est non nulle, met le compteur à la valeur j. si ri ≠ 0 CP ← j
sinon CP ← CP+1
CALL i appel i Appel de sous-programme à l'adresse i pile(r7) ← CP + 1
CP ← i
r7 ← r7 − 1
RETretour Retour de procédure à l'appelant. CP ← pile(r7)
r7 ← r7 + 1
PUSH riempiler ri Place la valeur contenue dans le registre i en haut de la pile (la même pile que pour les adresses). pile(r7) ← ri
r7 ← r7 − 1
POP rjdepiler rj Place la valeur en haut de la pile (la même pile que pour les adresses) dans le registre rj. rj ← pile(r7)
r7 ← r7 + 1
DEC riinc ri Décrémente d'un la valeur du registre i. ri ← ri - 1
NOOPrien N’effectue aucune opération (no operation).