.data PROG1 DS "helloworld" PROG2 DS "hello" PROG3 DS "sommeentiers" PROG4 DS "rechcara" PROG5 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, PROG4, PROG5, 0 .text .start MOV R1, R0 ; R1 sera notre compteur de programme BOUCLE: MOV R2, PROGS[R1] ; 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], R2 ; On appelle le miniOS pour lui demander ; de charger un autre programme. POP R1 ; On récupère R1, ... ADD R1, 1 ; .. et on l'incrémente. 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