XOR R0 R0 R0 ADD R0 R0 #5 # n = 5 XOR R6 R6 R6 XOR R7 R7 R7 ADD R7 R7 #35 # SP = 40 STR R0 R7 # on empile n CALL facto # on appelle facto dessus JMP fin # on saute à la fin du programme facto: LD R1 R7 # on dépile n JEQU R1 R6 ff # si n = 0, on retourne 1 SUB R2 R1 #1 # sinon, R2 prend n -1 ADD R7 R7 #1 # on incrémente le SP STR R2 R7 # on empile n - 1 CALL facto # on appelle facto LD R3 R7 # on dépile le résultat SUB R7 R7 #1 # on décrémente le SP LD R4 R7 # on dépile n MUL R1 R3 R4 # on multiplie n avec facto(n-1) STR R1 R7 # on empile facto(n) RET # on retourne ff: XOR R3 R3 R3 ADD R3 R3 #1 # R3 = 1 STR R3 R7 # on empile facto(0) = 1 RET # on retourne fin: LD R1 R7 # on met le resultat final dans R1 stop: JMP stop # boucle infinie de fin