Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
Système exploitation
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Cours L3 Info
Système exploitation
Commits
4d06256b
Commit
4d06256b
authored
4 months ago
by
Lucas B
Browse files
Options
Downloads
Patches
Plain Diff
Projet
parent
292069c1
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
Projets/enregistrement.asm
+401
-195
401 additions, 195 deletions
Projets/enregistrement.asm
with
401 additions
and
195 deletions
Projets/enregistrement.asm
+
401
−
195
View file @
4d06256b
...
...
@@ -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, "
Ch
ristophe
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, "
Ch
loe
41
", 10, "
Francois
61
", 10, "
Patricia
18
", 10, "
R
é
gis
56
", 10, "
Catherine
80
", 10, "
Sylvie
18
", 10, "
Bl
andine
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, "
Ch
ristine
24
", 10, "
Lucie
80
", 10, "
Jacques
46
", 10, "
Beatrice
77
", 10, "
Mickael
72
", 10, "
Es
telle
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, "
Al
ice
16
", 10, "
Cl
aire
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, "
Ch
loe
46
", 10, "
Pascale
60
", 10, "
Severine
42
", 10, "
Laetitia
15
", 10, "
Matthieu
67
", 10, "
Es
telle
47
", 10, "
Paul
29
", 10, "
Beatrice
30
", 10, "
Herv
é
66
", 10, "
Stephanie
21
", 10, "
Es
telle
22
", 10, "
Kevin
26
", 10, "
M
é
lissa
32
", 10, "
Lise
38
", 10, "
Emilie
23
", 10, "
Cl
ement
26
", 10, "
Martine
58
", 10, "
Nathalie
48
", 10, "
Es
telle
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, "
Ch
ristophe
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, "
Al
ice
35
", 10, "
Sylvie
78
", 10, "
Lise
78
", 10, "
Danielle
65
", 10, "
Herv
é
48
", 10, "
Monique
48
", 10, "
Ch
ristophe
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, "
Cl
ement
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, "
Cl
ement
24
", 10, "
Timeo
17
", 10, "
Lucie
57
", 10, "
Nathalie
14
", 10, "
Valentin
14
", 10, "
Sandrine
70
", 10, "
Adrien
80
", 10, "
Bl
andine
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, "
Cl
aire
26
", 10, "
Sophie
65
", 10, "
Bl
andine
21
", 10, "
Ch
ristine
38
", 10, "
Ch
ristine
73
", 10, "
Sylvain
23
", 10, "
Danielle
35
", 10, "
Arnaud
38
", 10, "
Eric
32
", 10, "
Maxime
53
", 10, "
Bl
andine
73
", 10, "
Camille
68
", 10, "
Jean
11
", 10, "
David
54
", 10, "
Pascale
39
", 10, "
Dominique
70
", 10, "
Aur
é
lie
22
", 10, "
Ax
el
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, "
Al
exandre
17
", 10, "
Marie
73
", 10, "
Sylvain
50
", 10, "
Delphine
69
", 10, "
Francois
31
", 10, "
Jerome
72
", 10, "
Camille
48
", 10, "
Ch
loe
40
", 10, "
Catherine
34
", 10, "
Lucie
15
", 10, "
Ch
loe
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, "
Ch
loe
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, "
Al
ice
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, "
Es
telle
63
", 10, "
Cedric
75
", 10, "
Jocelyne
50
", 10, "
Ch
ristine
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, "
Cl
aire
26
", 10, "
Tony
76
", 10, "
Baptiste
65
", 10, "
Mireille
74
", 10, "
Coralie
42
", 10, "
Timeo
21
", 10, "
Edouard
46
", 10, "
Virginie
56
", 10, "
Al
exandre
27
", 10, "
Delphine
14
", 10, "
Yvone
46
", 10, "
Ax
el
31
", 10, "
Vincent
44
", 10, "
Mickael
48
", 10, "
Amandine
38
", 10, "
Evelyne
68
", 10, "
Cl
ement
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, "
Cl
ement
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, "
Ch
ristine
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, "
Al
exandre
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, "
Ch
ristophe
26
", 10, "
R
é
gis
14
", 10, "
Liam
75
", 10, "
Cl
aire
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, "
Cl
aire
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
espac
e (ASCII
32
)
; Vérifier si le caractère est un
retour a la lign
e (ASCII
10
)
cmp
byte
[
v_tampon
],
10
je
l_finLire
; Si espac
e, fin du programme
je
l_finLire
; Si retour a la lign
e, 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 l
a valeur de la variabl
e ************/
;/************ On incremete l
e numero de personn
e ************/
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
v
ar
iabl
e
mov
edx
,
lent_recherche
; On affiche lent_recherche
c
ar
acter
e
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
di
vision
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
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment