Skip to content
Snippets Groups Projects
Commit 4d06256b authored by Lucas B's avatar Lucas B
Browse files

Projet

parent 292069c1
No related branches found
No related tags found
No related merge requests found
......@@ -37,14 +37,24 @@ lent_recherche: equ $ - t_recherche
t_moyenne: db "Age en moyenne:", 10
lent_moyenne: equ $ - t_moyenne
; Texte parenthese ouvrante
t_po: db "("
lent_po: equ $ - t_po
; Texte parenthese fermente
t_pf: db ")"
lent_pf: equ $ - t_pf
; Texte espace
t_espace: db " "
; Texte retour a la ligne
t_newline: db 10
; Texte point
t_point: db "."
; Gestion de l'erreur de lecture et d'ecriture des fonctions
er: db 'ERREUR ! ', 10
len_er: equ $-er
;/***************************************************************************************************************************/
;/*********************************************** Differente Variable Utiliser **********************************************/
......@@ -54,14 +64,24 @@ t_newline: db 10
v_choix: db "12"
lenv_choix: equ $ - v_choix
; Variable general
; Variable general (utiliser pour plusieurs choses, a plusieurs endroit)
v_i: db 0
v_j: db 0
v_tampon: db 0
v_tampon: dd 0, 0, 0, 0, 0
v_tampon2: dd 0
; Variable pour enregistrer un seul nom (10 caractere max + ... = 13 caractere max)
v_nom: db "1234567890...", 0
vlen_nom: equ $ - v_nom
; variable pour la liste des personnes
v_personnes: db 0 ; Ne mettre aucune donner deriere pour evite qu'elle soit ecrasse
; Variable pour enregistrer un seul age (3 caractere max -> 0 a 999 ans)
v_age: db "123", 0
vlen_age: equ $ - v_age
; variable pour la liste des personnes (petite taille)
;v_personnes: db "Timeo 10", 10, "Hugo 19", 10, "Lucas 20", 10, "Eric 50", 10, "Virginie 45", 10, "Marc 45", 10, "Beatrice 40", 10, "David 50", 10, "Sandrine 50", 10, "Henri 70", 10, "Evelyne 65", 10, "Tony 70", 10, "Danielle 64", 10, "Yvone 80", 0 ; Ne mettre aucune donner deriere pour evite qu'elle soit ecrasse
; variable pour la liste des personnes (grande taille generer par IA)
v_personnes: db "Danielle 45", 10, "Laetitia 24", 10, "Amandine 26", 10, "Noemie 17", 10, "Christophe 58", 10, "Isabelle 50", 10, "Guillaume 74", 10, "Laetitia 67", 10, "Marc 21", 10, "Justine 20", 10, "Timeo 68", 10, "Isabelle 60", 10, "Josiane 56", 10, "Gilles 11", 10, "Tony 22", 10, "Lise 38", 10, "Chloe 41", 10, "Francois 61", 10, "Patricia 18", 10, "Régis 56", 10, "Catherine 80", 10, "Sylvie 18", 10, "Blandine 18", 10, "Emilie 47", 10, "Bertrand 56", 10, "Jocelyne 74", 10, "Julien 16", 10, "Ophelie 55", 10, "Timeo 40", 10, "Emilie 33", 10, "Mélissa 31", 10, "Justine 41", 10, "Thibault 23", 10, "Lucie 19", 10, "Bertrand 77", 10, "Mickael 39", 10, "Gerard 19", 10, "Gabriel 21", 10, "Sylvain 59", 10, "Hervé 67", 10, "Nicolas 49", 10, "Jacques 16", 10, "Corentin 38", 10, "Nathan 38", 10, "Christine 24", 10, "Lucie 80", 10, "Jacques 46", 10, "Beatrice 77", 10, "Mickael 72", 10, "Estelle 56", 10, "Jérémie 13", 10, "Géraldine 28", 10, "Jacques 14", 10, "Colette 64", 10, "Bruno 24", 10, "Ophelie 31", 10, "Camille 14", 10, "Matthieu 55", 10, "Valentin 39", 10, "Emilie 26", 10, "Jean-Philippe 47", 10, "Manon 51", 10, "Thierry 18", 10, "Raphael 49", 10, "Gabriel 55", 10, "Jacques 46", 10, "Josiane 45", 10, "Serge 60", 10, "Francois 44", 10, "Sylvain 34", 10, "Martine 26", 10, "Corentin 49", 10, "Xavier 75", 10, "Colette 31", 10, "Amandine 21", 10, "Emma 30", 10, "Bruno 77", 10, "Antoine 44", 10, "Maxime 16", 10, "Serge 15", 10, "Olivier 59", 10, "Lucie 67", 10, "Helene 66", 10, "Alice 16", 10, "Claire 42", 10, "Patricia 60", 10, "Beatrice 18", 10, "Stephanie 14", 10, "Catherine 76", 10, "Manon 54", 10, "Hugo 51", 10, "Jacques 75", 10, "Virginie 76", 10, "Yvone 36", 10, "Arthur 57", 10, "Mélissa 75", 10, "Delphine 80", 10, "Fanny 13", 10, "Lucas 20", 10, "Ludovic 72", 10, "Veronique 26", 10, "Julien 64", 10, "Chloe 46", 10, "Pascale 60", 10, "Severine 42", 10, "Laetitia 15", 10, "Matthieu 67", 10, "Estelle 47", 10, "Paul 29", 10, "Beatrice 30", 10, "Hervé 66", 10, "Stephanie 21", 10, "Estelle 22", 10, "Kevin 26", 10, "Mélissa 32", 10, "Lise 38", 10, "Emilie 23", 10, "Clement 26", 10, "Martine 58", 10, "Nathalie 48", 10, "Estelle 27", 10, "Sylvain 17", 10, "Sebastien 20", 10, "Nathalie 25", 10, "Cedric 53", 10, "Jean-Pierre 27", 10, "Géraldine 66", 10, "Damien 51", 10, "Manon 64", 10, "Mathilde 45", 10, "Raphael 26", 10, "Hervé 39", 10, "Olivier 64", 10, "Sylvie 22", 10, "Régis 50", 10, "Emilie 58", 10, "Baptiste 34", 10, "Fanny 23", 10, "Juliette 80", 10, "Marie 60", 10, "Virginie 74", 10, "Mireille 59", 10, "Dominique 72", 10, "Dominique 47", 10, "Eric 55", 10, "Eric 45", 10, "Loic 58", 10, "Nathalie 78", 10, "Virginie 67", 10, "Christophe 19", 10, "Matthieu 38", 10, "Thibault 37", 10, "Régis 63", 10, "Sandrine 36", 10, "Ludovic 18", 10, "Jean-Philippe 31", 10, "Juliette 34", 10, "Camille 60", 10, "Alice 35", 10, "Sylvie 78", 10, "Lise 78", 10, "Danielle 65", 10, "Hervé 48", 10, "Monique 48", 10, "Christophe 49", 10, "David 28", 10, "Maxime 45", 10, "Maxime 34", 10, "Juliette 10", 10, "Cedric 14", 10, "Liam 25", 10, "Henri 24", 10, "Frédéric 74", 10, "Morgane 79", 10, "Mélissa 67", 10, "Jerome 71", 10, "Hervé 13", 10, "Gilles 75", 10, "Laurent 72", 10, "Liam 80", 10, "Josiane 30", 10, "Patricia 25", 10, "Jean-Pierre 45", 10, "Bruno 24", 10, "Antoine 68", 10, "Veronique 64", 10, "Pascale 24", 10, "Lionel 46", 10, "Tony 80", 10, "Marie 62", 10, "Serge 63", 10, "Frédéric 50", 10, "Lise 25", 10, "Clement 33", 10, "Caroline 62", 10, "Lionel 45", 10, "Cedric 65", 10, "Amandine 43", 10, "Raphael 35", 10, "Baptiste 15", 10, "Henri 27", 10, "Mireille 30", 10, "Pascale 74", 10, "Juliette 66", 10, "Julien 54", 10, "Clement 24", 10, "Timeo 17", 10, "Lucie 57", 10, "Nathalie 14", 10, "Valentin 14", 10, "Sandrine 70", 10, "Adrien 80", 10, "Blandine 73", 10, "Guillaume 16", 10, "Olivier 24", 10, "Arthur 43", 10, "Jérémie 12", 10, "Severine 31", 10, "Olivier 32", 10, "Laetitia 32", 10, "Mickael 67", 10, "Timeo 30", 10, "Géraldine 35", 10, "Marc 78", 10, "Claire 26", 10, "Sophie 65", 10, "Blandine 21", 10, "Christine 38", 10, "Christine 73", 10, "Sylvain 23", 10, "Danielle 35", 10, "Arnaud 38", 10, "Eric 32", 10, "Maxime 53", 10, "Blandine 73", 10, "Camille 68", 10, "Jean 11", 10, "David 54", 10, "Pascale 39", 10, "Dominique 70", 10, "Aurélie 22", 10, "Axel 49", 10, "Gerard 55", 10, "Frédéric 45", 10, "Xavier 34", 10, "Liam 61", 10, "Manon 22", 10, "Severine 78", 10, "Jean 23", 10, "Justine 30", 10, "Dominique 31", 10, "Amandine 52", 10, "Dominique 32", 10, "Elodie 67", 10, "Valentin 25", 10, "Veronique 11", 10, "Jean-Philippe 24", 10, "Alexandre 17", 10, "Marie 73", 10, "Sylvain 50", 10, "Delphine 69", 10, "Francois 31", 10, "Jerome 72", 10, "Camille 48", 10, "Chloe 40", 10, "Catherine 34", 10, "Lucie 15", 10, "Chloe 43", 10, "Juliette 36", 10, "Jean-Pierre 34", 10, "Evelyne 29", 10, "Corentin 52", 10, "Kevin 49", 10, "Morgane 55", 10, "Mélissa 32", 10, "Sandrine 39", 10, "Jean-François 24", 10, "Chloe 41", 10, "Coralie 14", 10, "Camille 19", 10, "Sandrine 17", 10, "Jean-Luc 27", 10, "Corentin 65", 10, "Danielle 44", 10, "Francois 25", 10, "Pascal 76", 10, "Damien 51", 10, "Ophelie 31", 10, "Paul 54", 10, "Emma 42", 10, "Gabriel 14", 10, "Emma 33", 10, "Jean-François 10", 10, "Noemie 12", 10, "Frédéric 31", 10, "Gilles 49", 10, "Mickael 10", 10, "Henri 44", 10, "Virginie 64", 10, "Ludovic 18", 10, "Colette 38", 10, "Vincent 65", 10, "Bruno 69", 10, "Arnaud 53", 10, "Lise 77", 10, "Jocelyne 78", 10, "Alice 29", 10, "David 32", 10, "Jean-Pierre 57", 10, "Julien 66", 10, "Jérémie 10", 10, "Vincent 75", 10, "Elodie 25", 10, "Thomas 54", 10, "Emma 12", 10, "Edouard 33", 10, "Morgane 72", 10, "Sandrine 79", 10, "Arthur 67", 10, "Jerome 79", 10, "Beatrice 13", 10, "Damien 54", 10, "Jean-Philippe 80", 10, "Bruno 47", 10, "Estelle 63", 10, "Cedric 75", 10, "Jocelyne 50", 10, "Christine 39", 10, "Damien 51", 10, "Géraldine 40", 10, "Thomas 41", 10, "Yvone 67", 10, "Celine 74", 10, "Colette 33", 10, "Jean-François 47", 10, "Adrien 67", 10, "Severine 56", 10, "Francois 25", 10, "Mireille 65", 10, "Nathalie 55", 10, "Raphael 16", 10, "Olivier 10", 10, "Marie 70", 10, "Gabriel 30", 10, "Morgane 44", 10, "Claire 26", 10, "Tony 76", 10, "Baptiste 65", 10, "Mireille 74", 10, "Coralie 42", 10, "Timeo 21", 10, "Edouard 46", 10, "Virginie 56", 10, "Alexandre 27", 10, "Delphine 14", 10, "Yvone 46", 10, "Axel 31", 10, "Vincent 44", 10, "Mickael 48", 10, "Amandine 38", 10, "Evelyne 68", 10, "Clement 29", 10, "Bertrand 43", 10, "Jerome 43", 10, "Jean-Pierre 59", 10, "Stephanie 31", 10, "Celine 72", 10, "Sylvie 25", 10, "Gilles 11", 10, "Severine 80", 10, "Géraldine 23", 10, "Delphine 38", 10, "Hugo 54", 10, "Sophie 77", 10, "Xavier 18", 10, "Colette 33", 10, "Matthieu 27", 10, "Gerard 52", 10, "Lionel 56", 10, "Adrien 35", 10, "Beatrice 50", 10, "Sebastien 50", 10, "Baptiste 35", 10, "Jérémie 34", 10, "Evelyne 62", 10, "Henri 54", 10, "Clement 47", 10, "Laurence 77", 10, "Evelyne 24", 10, "Sabrina 31", 10, "Gilles 78", 10, "Evelyne 60", 10, "Loic 23", 10, "Sabrina 18", 10, "Gerard 16", 10, "Elodie 61", 10, "Kevin 17", 10, "Valentin 37", 10, "Danielle 60", 10, "Jean-Michel 62", 10, "Henri 74", 10, "Thomas 69", 10, "Thierry 32", 10, "Marie 36", 10, "Christine 22", 10, "Celine 23", 10, "David 29", 10, "Thierry 36", 10, "Laurence 33", 10, "Nathan 37", 10, "Maxime 75", 10, "Patricia 73", 10, "Liam 13", 10, "Caroline 71", 10, "Patricia 79", 10, "Delphine 38", 10, "Sabrina 24", 10, "Ludovic 43", 10, "Veronique 47", 10, "Lucas 21", 10, "Baptiste 45", 10, "Mathieu 36", 10, "Ophelie 17", 10, "Nathan 44", 10, "Manon 74", 10, "Hugo 75", 10, "Lionel 26", 10, "Paul 65", 10, "Philippe 60", 10, "Antoine 46", 10, "Vincent 69", 10, "Arthur 23", 10, "Philippe 23", 10, "Jean-Paul 44", 10, "Ophelie 48", 10, "Kevin 28", 10, "Caroline 13", 10, "Régis 59", 10, "Arthur 74", 10, "Bertrand 72", 10, "Martine 58", 10, "Raphael 36", 10, "Florence 41", 10, "Pascal 13", 10, "Thierry 49", 10, "Gerard 31", 10, "Veronique 58", 10, "Jocelyne 45", 10, "Jean-Michel 20", 10, "Alexandre 42", 10, "Gabriel 12", 10, "Jean-Paul 47", 10, "Monique 70", 10, "Laetitia 37", 10, "Coralie 59", 10, "Jean-François 47", 10, "Jerome 70", 10, "Mathilde 44", 10, "Justine 63", 10, "Melanie 38", 10, "Jocelyne 80", 10, "Stephanie 34", 10, "Coralie 67", 10, "Jean 25", 10, "Jean-François 41", 10, "Valentin 67", 10, "Christophe 26", 10, "Régis 14", 10, "Liam 75", 10, "Claire 38", 10, "Philippe 22", 10, "Mathieu 12", 10, "Adrien 22", 10, "Fabienne 26", 10, "Jean-Philippe 13", 10, "Lionel 23", 10, "Marc 34", 10, "Tony 55", 10, "Eric 75", 10, "Pascale 35", 10, "Claire 54", 10, "Laurent 58", 10, "Isabelle 56", 10, "Eric 57", 10, "Vincent 62", 10, "Julien 67", 10, "Tony 73", 10, "Ludovic 65", 10, "Jean-Luc 51", 10, "Laurence 65", 10, "Stephanie 67", 10, "David 30", 10, "Aurélie 20", 10, "Aurélie 24", 10, "Celine 17", 10, "Martine 20", 10, "Isabelle 70", 10, "Celine 18", 10, "Adrien 17", 10, "Jean-Michel 56", 0
section .text
global _start
......@@ -115,53 +135,51 @@ mov ecx, t_enregistrement ; On affiche le contenu a partir du pointeur t_e
mov edx, lent_enregistrement ; On affiche lent_enregistrement variable
int 80h ; On execute l'appel Systeme
;/************ On incremete la valeur de la variable ************/
mov edi, v_personnes
mov edi, v_personnes ; On enregistre dans edi l'adresse de debut des personnes
;/************ On va a la fin de notre liste de personne ************/
l_debutPourEnregistrer:
cmp byte [edi], 0
je l_finPourEnregistrer
inc edi
jmp l_debutPourEnregistrer
cmp byte [edi], 0 ; On verifie que ce ne soit pas le caractere d'arret
je l_finPourEnregistrer ; Si c'est le cas on va a la fin
inc edi ; Sinon on passe au caracetere suivant
jmp l_debutPourEnregistrer ; On boucle
;/************ gestion du caractere permettant de changer de personnes dans notre liste ************/
l_finPourEnregistrer:
mov al, [v_personnes]
cmp byte [edi], al
je l_debutLire
mov byte [edi], 10
inc edi
cmp byte [edi], al ; On regarde si c'est la permiere personne
je l_debutLire ; Si c'est le cas, on commence a lire le prenom
mov byte [edi], 10 ; Sinon on affiche un retour a la ligne
inc edi ; Et on passe sur le caractere suivant
;/************ Lecture de l'enregistrement ************/
l_debutLire:
; Lire un caractère depuis l'entrée standard
mov eax, 3 ; Syscall read
mov ebx, 0 ; STDIN
mov eax, 3 ; Appel systeme read
mov ebx, 0 ; Entrer standard
mov ecx, v_tampon ; Lire dans "v_tampon"
mov edx, 1 ; Lire 1 caractère
int 80h
int 80h ; On execute l'appel Systeme
; Vérifier si le caractère est un espace (ASCII 32)
; Vérifier si le caractère est un retour a la ligne (ASCII 10)
cmp byte [v_tampon], 10
je l_finLire ; Si espace, fin du programme
je l_finLire ; Si retour a la ligne, fin du programme
mov al, [v_tampon]
mov byte [edi], al
inc edi
mov byte [edi], al ; On eregistre le caractere en cours dans notre liste de personnes
inc edi ; On considere le caractere suivant
jmp l_debutLire ; Lire le prochain caractère
;/************ Gestion de la fin de l'enregistrement ************/
l_finLire:
mov byte [edi], 0
jmp l_menu ; lorsque on a terminer on raffiche le menu
;/***************************************************************************************************************************/
;/****************************************************** Choix 2 Lister *****************************************************/
;/***************************************************************************************************************************/
l_lister:
;/************ Affichage du message pour le listing ************/
mov eax, 4 ; Appel systeme write
mov ebx, 1 ; Sur la sortie standart
......@@ -171,21 +189,15 @@ int 80h ; On execute l'appel Systeme
;/************ Compteur de personne ************/
mov byte [v_i], 1 ; On initialise le numero de personne
add byte [v_i], '0' ; On le convertie en caractere
;/************ On incremete la valeur de la variable ************/
mov edi, v_personnes
mov edi, v_personnes ; edi prend l'adresse de notre liste de personne
;/************ Si il n'y a rien, on affiche rien *************/
cmp byte [edi], 0
je l_finPourLister
cmp byte [edi], 0 ; Compare le caractere dans edi avec le caractere de fin de notre chaine
je l_finPourLister ; Si il n'y a rien on saute a la fin
;/************ On affiche le nombre et l'espace ************/
mov eax, 4 ; Appel systeme write
mov ebx, 1 ; Sur la sortie standart
mov ecx, v_i ; On affiche le contenu a partir du pointeur v_i
mov edx, 1 ; On affiche 1 caractere
int 80h ; On execute l'appel Systeme
call EcrireNombre ; Appel la fonction pour ecrire le numero de la personne
mov eax, 4 ; Appel systeme write
mov ebx, 1 ; Sur la sortie standart
......@@ -193,25 +205,26 @@ mov ecx, t_espace ; On affiche le contenu a partir du pointeur t_l
mov edx, 1 ; On affiche lent_lister variable
int 80h ; On execute l'appel Systeme
;/************ On incremete la valeur de la variable ************/
;/************ On incremete le numero de personne ************/
inc byte [v_i] ; On incremente v_i
;/************ Affiche une personne ************/
l_debutPourLister:
cmp byte [edi], 0
je l_finPourLister
cmp byte [edi], 10
je l_numLister
cmp byte [edi], 0 ; Compare avec le caractere de fin de liste
je l_finPourLister ; Si c'est le meme caractere, on a terminer
cmp byte [edi], 10 ; Compare avec le caractere de fin de personne
je l_numLister ; Si c'est le meme caractere, on doit changer de personne !
mov eax, 4 ; Appel systeme write
mov ebx, 1 ; Sur la sortie standart
mov ecx, edi ; On affiche le contenu a partir du pointeur v_personnes + v_j
mov edx, 1 ; On affiche 1 seule caractere
int 80h ; On execute l'appel Systeme
inc edi
jmp l_debutPourLister
jmp l_debutPourLister ; On boucle sur les caractere
;/************ Affiche le numero de personne suivant ************/
l_numLister:
mov eax, 4 ; Appel systeme write
mov ebx, 1 ; Sur la sortie standart
......@@ -219,11 +232,7 @@ mov ecx, t_newline ; On affiche le contenu a partir du pointeur t_l
mov edx, 1 ; On affiche lent_lister variable
int 80h ; On execute l'appel Systeme
mov eax, 4 ; Appel systeme write
mov ebx, 1 ; Sur la sortie standart
mov ecx, v_i ; On affiche le contenu a partir du pointeur v_i
mov edx, 1 ; On affiche 1 caractere
int 80h ; On execute l'appel Systeme
call EcrireNombre ; Appel la fonction pour ecrire le numero de la personne
mov eax, 4 ; Appel systeme write
mov ebx, 1 ; Sur la sortie standart
......@@ -234,26 +243,28 @@ int 80h ; On execute l'appel Systeme
inc byte [v_i] ; On incremente v_i
inc edi ; On incremente v_i
jmp l_debutPourLister
jmp l_debutPourLister ; On continue d'afficher des personnes
;/************ On ajoute de nouvelle ligne pour plus de lisibilité avant l'appel du menu ************/
l_finPourLister:
mov eax, 4 ; Appel systeme write
mov ebx, 1 ; Sur la sortie standart
mov ecx, t_newline ; On affiche le contenu a partir du pointeur t_lister
mov edx, 1 ; On affiche lent_lister variable
int 80h ; On execute l'appel Systeme
mov eax, 4 ; Appel systeme write
mov ebx, 1 ; Sur la sortie standart
mov ecx, t_newline ; On affiche le contenu a partir du pointeur t_lister
mov edx, 1 ; On affiche lent_lister variable
int 80h ; On execute l'appel Systeme
jmp l_menu ; lorsque on a terminer on raffiche le menu
;/***************************************************************************************************************************/
;/***************************************************** Choix 3 Supprimer ***************************************************/
;/***************************************************************************************************************************/
l_supprimer:
;/************ Affichage du message pour la suppression ************/
mov eax, 4 ; Appel systeme write
mov ebx, 1 ; Sur la sortie standart
......@@ -261,9 +272,133 @@ mov ecx, t_supprimer ; On affiche le contenu a partir du pointeur t_s
mov edx, lent_supprimer ; On affiche lent_supprimer variable
int 80h ; On execute l'appel Systeme
; TODO
call lireNombre ; Appel de la fonction pour recuperer un nombre
;/************ Initialisation des variables et registre ************/
mov edi, v_personnes ; On parcour la chaine v_personnes
mov al, [v_tampon] ; Enregistrement du numero de personne a supprimer
mov byte [v_i], 1 ; Numero de la personne en cours
mov ecx, 0 ; Pour parcourir le nom
;/************ Gestion des differents cas lors de la recherche de personne ************/
l_debutPourSupp:
cmp byte [edi], 0 ; Si on est arriver a la fin de notre liste
je l_finPourSuppErreur ; On va sur l'erreur (personne non trouver)
mov esi, edi ; Enregistrement de edi dans esi
dec edi ; On decremente edi
cmp byte [v_i], al ; Si le numero de la personne est le bon
je l_finPourSuppValid ; On va traiter sa suppresion
inc edi ; On reincremente edi
cmp byte [edi], 10 ; Si le contenu de edi N'est PAS un retour a la ligne
jne l_incv_i ; On ne detecte pas une nouvelle personne
inc byte [v_i] ; Sinon, on incremente le compteur de personne
;/************ Passage au caractere suivant ************/
l_incv_i:
inc edi ; On passe au caractere suivant
jmp l_debutPourSupp ; Et on boucle
;/************ Lorsque on a trouver la personne ************/
l_finPourSuppValid:
cmp byte [esi], 0 ; Si on arrive a la fin de la liste
je l_finPourSuppValidTaille ; On Continue plus loin
cmp byte [esi], 10 ; Si on arrive a la fin de la personne
je l_finPourSuppValidTaille ; On Continue plus loin
cmp ecx, 10 ; Si on est sur la 10eme lettre du prenom
je l_finNom2 ; On va afficher les 3 .
cmp ecx, 10 ; Si on est a plus de la 10eme lettre du prenom
ja l_f ; On incremente directement les variable
cmp byte [esi], 32 ; Si on detecte un espace (fin du prenom et debut de l'age)
je l_finNom1 ; On enregistre le nombre de caractere lu!
;/************ On enregistre a la ecx eme case de v_nom le caractere contenu dans esi ************/
mov al, byte [esi] ; mettre le caractere esi dans al
mov ebx, v_nom ; mettre l'adresse de v_nom dans ebx
add ebx, ecx ; Ajouter le nombre de lettre deja lu (ecx) a ebx
mov byte [ebx], al ; mettre a l'adresse ebx le caractere de al
;/************ On incremente les variables ************/
l_f:
inc esi ; Incrementation de la variable parcourant la liste
inc ecx ; Incrementation de la variable contenant le nombre de lettre dans le nom
jmp l_finPourSuppValid ; On traite le prochain caractere
;/************ On enregisttre les information necessaire ************/
l_finNom1:
mov [v_tampon2], ecx ; On enregistre le nombre de caractere lu pour le nom dans v_tampon2
mov ecx, 12 ; On met ecx a 12 (pour ne plus rentrer dans certain cas)
jmp l_f ; On continue notre boucle
;/************ On fini de remplir notre variable pour le nom et on enregistre les informations ************/
l_finNom2:
inc ecx ; On incremente ecx (pour le .)
inc ecx ; On incremente ecx (pour le .)
inc ecx ; On incremente ecx (pour le .)
mov [v_tampon2], ecx ; On enregistre le nombre de caractere lu pour le nom dans v_tampon2
mov ebx, v_nom ; On recupere l'adresse de v_nom
add ebx, ecx ; On ajoute le nombre de caractere lu
mov byte [ebx], 46 ; On affiche un point
inc ebx ; On considere la prochaine adresse
mov byte [ebx], 46 ; On affiche un point
inc ebx ; On considere la prochaine adresse
mov byte [ebx], 46 ; On affiche un point
jmp l_f ; On continue notre boucle
;/************ ************/
l_finPourSuppValidTaille:
cmp byte [esi], 0 ; Si on est arriver a le derniere personne
je l_finSupp ; On affiche les phrase final
mov al, byte [esi] ; On enregistre le caractere esi dans al
mov byte [edi], al ; On enregistre le caractere al a l'adresse edi
inc edi ; on incremente edi
inc esi ; on incremente esi
jmp l_finPourSuppValidTaille ; On traite le caractere suivant
;/************ On affiche les phrase final ************/
l_finSupp:
mov al, byte [esi] ; On enregistre le dernier commentaire
mov byte [edi], al ; A la derniere position de v_nom
mov eax, 4 ; Appel systeme write
mov ebx, 1 ; Sur la sortie standart
mov ecx, t_supprimerValid1 ; On affiche le debut du message de validation
mov edx, lent_supprimerValid1 ; On affiche lent_supprimerValid1 caractere
int 80h ; On execute l'appel Systeme
call EcrireNombre
mov eax, 4 ; Appel systeme write
mov ebx, 1 ; Sur la sortie standart
mov ecx, t_espace ; On affiche un espace
mov edx, 1 ; On affiche 1 caractere
int 80h ; On execute l'appel Systeme
mov eax, 4 ; Appel systeme write
mov ebx, 1 ; Sur la sortie standart
mov ecx, v_nom ; On affiche le nom de la personne supprimer
mov edx, [v_tampon2] ; On affiche v_tampon2 caractere
int 80h ; On execute l'appel Systeme
mov eax, 4 ; Appel systeme write
mov ebx, 1 ; Sur la sortie standart
mov ecx, t_supprimerValid2 ; On affiche le fin du message de validation
mov edx, lent_supprimerValid2 ; On affiche lent_supprimerValid2 caractere
int 80h ; On execute l'appel Systeme
jmp l_lister ; lorsque on a terminer on affiche la lister des personnes mise a jours
;/************ Lorsque on n'a pas trouver la personne ************/
l_finPourSuppErreur:
mov eax, 4 ; Appel systeme write
mov ebx, 1 ; Sur la sortie standart
mov ecx, t_supprimerErreur ; On affiche le message d'erreur
mov edx, lent_supprimerErreur ; On affiche lent_recherche caractere
int 80h ; On execute l'appel Systeme
jmp l_menu ; Si il y a une erreur on reafiche le menu
......@@ -271,12 +406,11 @@ jmp l_menu ; Si il y a une erreur on reafiche le menu
;/***************************************************** Choix 4 Recherche ***************************************************/
;/***************************************************************************************************************************/
l_recherche:
;/************ Affichage du message pour la recherche du plus âgée et du plus jeune ************/
mov eax, 4 ; Appel systeme write
mov ebx, 1 ; Sur la sortie standart
mov ecx, t_recherche ; On affiche le contenu a partir du pointeur t_recherche
mov edx, lent_recherche ; On affiche lent_recherche variable
mov edx, lent_recherche ; On affiche lent_recherche caractere
int 80h ; On execute l'appel Systeme
; TODO
......@@ -309,3 +443,75 @@ l_exit:
mov eax, 1 ; Appel systeme exit
mov ebx, 0 ; Code de retour 0 (succes)
int 80h ; On execute l'appel Systeme
;/***************************************************************************************************************************/
;/***************************************************** Fonction Utiliser ***************************************************/
;/***************************************************************************************************************************/
lireNombre:
push 0
lire:
mov eax, 3
mov ebx, 0
mov ecx, v_i
mov edx, 1
int 80h
cmp byte [v_i], '0'
jb fin_lire
cmp byte [v_i], '9'
ja fin_lire
sub byte [v_i], '0'
pop eax
imul eax, 10
jo too_big
add eax, [v_i]
jo too_big
push eax
jmp lire
fin_lire:
pop eax
mov [v_tampon], al
ret
EcrireNombre:
mov al, [v_i]
push -1
cmp eax, 9
jbe afficher
division:
mov edx, 0
mov ecx, 10
idiv ecx
push edx
cmp eax, 9
jbe afficher
jmp division
afficher:
mov [v_tampon], al
add byte [v_tampon], '0'
mov eax, 4
mov ebx, 1
mov ecx, v_tampon
mov edx, 1
int 80h
pop eax
cmp eax, -1
jne afficher
ret
too_big:
mov eax, 4
mov ebx, 2
mov ecx, er
mov edx, len_er
int 80h
mov eax, 1
mov ebx, 0
int 80h
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment