Rédaction du programme "CHAINE" ------------------------------- Afin d'écrire le programme PEP8 demandé, je vous suggère d'y aller une étape à la fois. 0- Le code d'item est composé de caractères ASCII. Lorsqu'on charge (ou compare) un caractère, on doit utiliser LDBYTEA/STBYTEA et non LDA/STA. CPBYTEA n'existe pas. Truc: comparer le préfixe ou le suffixe par groupe de 2 lettres avec LDA/CPA. 1- Comprendre le fonctionnement du sous-programme d'allocation de mémoire NEW. (chap 9.9) 2- Copier et exécuter le programme LISTE sur le site du cours. Celui-ci crée une liste chainée de 5 maillons. Chaque maillon est ajouté au début de la chaine. Le débogueur ne montre à l'écran que les 4 premiers octets d'un maillon. Pour voir le contenu complet d'un maillon, il faut utiliser la visualisation de la mémoire. 3- Afficher les maillons de la liste chainée en ordre croissant de valeur numérique. Truc: considérer le premier maillon comme le premier choix puis comparer avec les suivants. Afficher le code choisi. Modifier le code du maillon choisi en changeant sa valeur pour 99. Ainsi il ne sera plus choisi. 4- Modifier le programme afin de lire avec CHARI des valeurs ASCII de 4 positions au lieu de chiffres. ex: ABCD MOIS ALLO BORD DONC et les insérer dans la chaine. 5- Afficher les maillons de la liste chainée en ordre croissant de valeur ASCII. 6- Modifier le programme afin de lire des valeurs ASCII de 1 à 4 positions ex: LES LOI LAC LA LIT LIEN LOIN afin de les insérer dans la chaine puis conserver la longueur. 7- Afficher les maillons de la liste chainée en ordre croissant de valeur ASCII. 8- Modifier le programme afin de lire des valeurs ASCII de 1 à 7 positions contenant le tiret ex: AB-1 AB-2 AC-3 AC-32 AB-22 afin de les insérer dans la chaine puis conserver la longueur. 9A-Afficher les maillons de la liste chainée en ordre croissant de préfixe, puis de longueur, puis de valeur ASCII. 9B-Le programme recommence. Il faut initialiser head et hpPtr: LDA 0,i STA head,d LDA heap,i ; ADDRSS heap STA hpPtr,d Le débogueur réassignera les mêmes adresses pour les nouveaux maillons (sans effacer les vieux maillons). 10-Faire la validation (lettres majuscules, minuscules, tiret, chiffres, espace, ENTREE) d'un code d'item et l'insérer dans la liste chainée. ASTUCE: afin de conserver le code d'item original (ex:AA-zzA1), il faut conserver la valeur originale dans une maillon de 14 octets: 2-longueur 6-code en majuscules sans tiret 4-code partie suffixe original 2-pointeur ou 2-longueur 2-préfixe 2-suffixe1 2-suffixe2 2-suffixe1 original 2-suffixe2 original 2-pointeur mlong: .EQUATE 0 ; #2h longueur mprefixe:.EQUATE 2 ; #2h msuff1: .EQUATE 4 ; #2h 2 premiers octets du suffixe msuff2: .EQUATE 6 ; #2h 2 derniers octets du suffixe morig1: .EQUATE 8 ; #2h 2 premiers octets du suffixe original morig2: .EQUATE 10 ; #2h 2 derniers octets du suffixe original mNext: .EQUATE 12 ; #2h maillon suivant (null (aka 0) pour fin de liste) N.B. Il est préférable de travailler avec une longueur de 2 octets pour faciliter les comparaisons (CPA). Le débogueur ne montre que le premier octet des champs #2h. (le 2e octet est présent mais non affiché) 11-Tester les invalidités. 12-Ecrire les phrases à afficher au terminal lors de l'exécution dont le paragraphe de bienvenue, le mode d'emploi, les exemples et la façon de terminer l'entrée des données. 13-Commenter le code source PEP8. 14-Consulter la grille du correcteur afin de ne rien oublier. 15-Exécuter le programme avec seulement les 5 essais obligatoires; copier/coller (CTRL+C/CTRL+V) le contenu complet de la fenêtre d'Input/Output du Terminal I/O incluant les messages de bienvenue et de terminaison dans NOTEPAD et sauvegarder sous resultats.txt. 16-Dans Moodle, remettre le fichier source "chaine.txt" et le fichier des résultats "resultats.txt" dans l'icone de remise d'un travail à la semaine 12. Pour un travail d'équipe, un seul membre doit effectuer la remise en mentionnant les 2 noms dans les commentaires du programme. Et voilà, laissons le correcteur évaluer le travail.