3
Traitement des instructions
• On sépare chaque ligne les instructions des données par la fonction “separationLigne”. Le nom de
l’instruction sera stocké dans la structure "instruction" sur le pointeur "nomIns" et les données le
seront sur le pointeur "donneEnChaine". Pour ce faire, on part de pos+1, autrement dit un
caractère après la position du “ :”, on avance tant qu’il y a des espaces ou des tabulation. Si, c’est
une ligne vide un message d’erreur sera affiché et le programme s’arrêtera. Si la ligne n’est pas vide,
on appelle à la fonction « testeEspace » qui teste si un caractère est un espace, tabulation, retour à
la ligne, ou le caractère 0. Tant que cette fonction renvoie 0 on stocke chaque caractère dans tab
instruction. Quand on a terminé avec les instructions on refait les même tests pour les données. Si
tout va bien on stocke les données dans le tableau donnee et on renvoie le nombre données lues.
•On vérifie si les instructions et les données sont entrées de manière correcte avec la fonction
“testIns_Don”. On traite tous les cas possibles avec des sous-fonctions. C'est à dire s'il n'y a pas
d'erreur de syntaxe. S’il y a une erreur un message d’erreur sera affiché et le programme s’arrête. De
plus, on teste également les données de l’instruction, c’est à dire si le nombre des données est bien
respecté pour l’instruction correspondante, si le type des données est correcte et ainsi de suite.
• Si la fonction “testIns_Don” ne renvoie pas -1, on stocke les informations de l’instruction (nomIns,
codeOpe, nbrDonnee, etiq, donneeEnChaine, donnee) dans la structure.
Vérification générale
• Problème doublage d’étiquette : on vérifie qu'il n’y a pas de doublon d’étiquette (des étiquettes qui
ont le même nom) grâce à la fonction “doublonEtiq”. S’il y en a une, un message d’erreur sera affiché
et le programme s’arrêtera.
•Vérification de « halt ». En effet, si le fichier assembleur n’a pas de « halt » un message d’erreur sera
affiché et le programme s’arrêtera.
• Problème d’appel d’étiquette : On teste si les l’appel des instructions “call”, “jmp”, “jpc” existent
bien(c'est à dire qu'ils font référence à une étiquette existante) grâce à la fonction “occurEtiqAvant”.
S‘il n’existe pas un message d’erreur sera affiché et le programme s’arrêtera.
C. Création du fichier langage machine
Franchit l’étape de vérification de syntaxe du fichier assembleur, un message indiquera que la
syntaxe du fichier d’assembleur est correct que le programme va procéder à la traduction vers le langage
machine :
On crée un fichier « fichier binaire.txt », qu’on écrit ligne par ligne les codes opération et les données de
chaque instruction en langage machine.
Affichage du résultat.
Fermeture du programme.