diff options
Diffstat (limited to 'samples/testtout.s')
-rw-r--r-- | samples/testtout.s | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/samples/testtout.s b/samples/testtout.s new file mode 100644 index 0000000..0c1350e --- /dev/null +++ b/samples/testtout.s @@ -0,0 +1,33 @@ +.data +PROG1 DS "sommeentiers" +PROG2 DS "rechcara" +PROG3 DS "recherche" + +MSG1 DS "Exécution du programme numéro " +MSG2 DS " appelé " +MSG3 DS "...\n" +MSGTERM DS "Le programme s'est terminé!\n" +MSGFIN DS "Tout est terminé, bye!\n" + +PROGS DD PROG1, PROG2, PROG3, 0 + +.text +.start + MOV R1, R0 ; R1 sera notre compteur de programme +BOUCLE: MOV R2, PROGS[R0] ; On lit l'adresse du nom du prochain programme + JE R2, R0, FIN ; Si c'est l'adresse nulle, on sort + MOV, [0xffffff04], MSG1 ; On affiche le premier morceau de la chaîne + MOV, [0xffffff06], R1 ; On affiche le numéro du programme + MOV, [0xffffff04], MSG2 ; On affiche le deuxième morceau de la chaîne + MOV, [0xffffff04], R2 ; On affiche le nom du programe + MOV, [0xffffff04], MSG3 ; On affiche la dernière chaîne + + PUSH R1 ; On sauvegarde R1 avant + MOV, [0xffffff0a], R1 ; On appelle le miniOS pour lui demander + ; de charger un autre programme. + POP R1 ; Et on récupère R1 + + MOV, [0xffffff04], MSGTERM ; On affiche la chaîne pour dire que l'on vient de sortir + JMP BOUCLE ; et on boucle +FIN: MOV, [0xffffff04], MSGFIN ; On affiche en dernier le message de fin. + HALT |