From ddb9853ac44740e8e75aebaa2bd733ba68f63c12 Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Sat, 21 Dec 2024 10:55:33 +0100 Subject: [PATCH] add facto example --- test/facto.asm | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 test/facto.asm diff --git a/test/facto.asm b/test/facto.asm new file mode 100644 index 0000000..c71a668 --- /dev/null +++ b/test/facto.asm @@ -0,0 +1,30 @@ + 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 \ No newline at end of file