begin process at 2010 03 14 17:19:18
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

c et asm

 > CALCULATRICE POUR PC EN ASSEMBLEUR

CALCULATRICE POUR PC EN ASSEMBLEUR


 Information sur la source

Note :
Aucune note
Catégorie :c et asm Niveau :Débutant Date de création :14/08/2004 Vu / téléchargé :11 599 / 523

Auteur : Je sais pas

Ecrire un message privé
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Ce code correspond à une calculatrice classique de type PC.Elle permet entre autres les opérations d'addition,de soustraction,multiplication et des calculs de racines carrées et factorielle sont en cours de construction..

Ce code s'adresse à des personnes voulant s'initier au langage machine (à un niveau relativement simple ici) pour comprendre la notion de registre  et comment s'organise un menu en machine (l'équivalent du main en langage C).

Pour les néophytes, pour pouvoir utiliser cette source vous devez posséder le logiciel PCSpim(pas besoin de l'installer !!).Une fois le logiciel ouvert vous effectuez les opérations suivantes : File -> Open -> nom_du_fichier_a_ouvrir.s(je tiens a préciser que le logiciel ne charge que des fichiers dont l'extension est .s et non .txt donc en cas de fichier .txt veillez à changer son extension).
Une fois le fichier chargé, vous cliquez sur F5 (Go) et vous validez par OK pour le message qui va suivre....Vous pouvez maintenant utiliser le programme.Il faudra sysématiquement réaliser cette opération lorsque vous voulez utiliser un programme en assembleur sous PSCpim.
P.S:si lors de l'utilisation de mon programme, une erreur survient ou que vous ne pouvez plus agir sur la console pas de panique....vous allez dans Simulator->Break -> Cliquez sur Non.....A ce moment là l'éxécution du programme est arrêté et vous pouvez à nouveau recharger le fichier.s pour une nouvelle utilisation du programme...

Source

  • .data
  • str1 : .asciiz "\n\n\t8:Menu Principal"
  • str2 : .asciiz "\n\t9:Quitter"
  • str3 : .asciiz "\nLa somme des 2 nombres donne : "
  • str4 : .asciiz "\nLa difference des 2 nombres donne : "
  • str5 : .asciiz "\nLe produit des 2 nombres donne : "
  • str6 : .asciiz "\nLa division des 2 nombres donne : "
  • str7 : .asciiz "\nMerci d'avoir utilise ma calculatrice..."
  • str8 : .asciiz "\n\n\tVeuillez saisir votre choix : "
  • str9 : .asciiz "\nLe carre de votre nombre est : "
  • str10 : .asciiz "\n\tOption en cours de construction..."
  • erreur_saisie : .asciiz"\n\tSaisie ne correspondant pas a un des choix proposes..."
  • ch3 : .asciiz "\n\nProgramme de gestion de fonctions mathématiques\n\n"
  • ch4 : .asciiz "\n\n\tFonctions à calculer : \n\n\t1)Somme de 2 nombres\n\t2)Différence de 2 nombres\n\t3)Produit de 2 nombres\n\t4)Division de 2 nombres\n\t5)Carré d'un nombre\n\t6)Racine carrée d'un nombre\n\t7)Calcul du factorielle d'un nombre (n!)\n\t\n\n\t\t\t\tYouss Prod.\n\n\tVeuillez saisir votre choix : "
  • ch12 : .asciiz "\nMerci d'avoir utilisé mon programme...\n"
  • saisie_nombre : .asciiz "\nVeuillez saisir la valeur de x : "
  • saisie_nombre1: .asciiz "\nVeuillez saisir la valeur de y : "
  • zero : .float 0.0
  • choix1 : .byte 1
  • choix2 : .byte 2
  • choix3 : .byte 3
  • choix4 : .byte 4
  • choix5 : .byte 5
  • choix6 : .byte 6
  • choix7 : .byte 7
  • choix8 : .byte 8
  • choix9 : .byte 9
  • .text
  • .globl main
  • main :
  • menu :
  • lwc1 $f1,zero
  • lwc1 $f2,zero
  • lwc1 $f3,zero
  • li $a3,0
  • li $t1,0
  • li $t2,0
  • li $t3,0
  • li $v0,4
  • la $a0,ch4 # On "fait pointer" le registre a0 sur la zone mémoire ch4
  • syscall # On affiche ch4
  • li $v0,5
  • syscall # On saisit la valeur entiere
  • move $a3,$v0 # On transfère le contenu du registre v0 dans le registre a3
  • lb $t1,choix1
  • beq $t1,$a3,saisie_secu # Si l'utilisateur tape 1 , on appelle la fonction saisie
  • lb $t1,choix2
  • beq $t1,$a3,saisie_secu # Si l'utilisateur tape 2 , on appelle la fonction saisie
  • lb $t1,choix3
  • beq $t1,$a3,saisie_secu # Si l'utilisateur tape 3 , on appelle la fonction saisie
  • lb $t1,choix4
  • beq $t1,$a3,saisie_secu # Si l'utilisateur tape 4 , on appelle la fonction saisie
  • lb $t1,choix5
  • beq $t1,$a3,saisie_secu2 # Si l'utilisateur tape 5 , on appelle la fonction saisie
  • lb $t1,choix6
  • beq $t1,$a3,option # Si l'utilisateur tape 6 , on appelle la fonction saisie
  • lb $t1,choix7
  • beq $t1,$a3,option # Si l'utilisateur tape 7 , on appelle la fonction saisie
  • lb $t1,choix8
  • beq $t1,$a3,fin # Si l'utilisateur tape 8 , on quitte
  • jal erreur_utilisateur # Si l'utilisateur tape un choix non propose par le programme
  • jal menu # Puis retour au menu
  • #--------------------------********Saisie des nombres********-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------#
  • saisie_secu :
  • li $v0,4
  • la $a0,saisie_nombre # On "fait pointer" le registre a0 sur la zone mémoire str1
  • syscall # On affiche saisie_nombre
  • li $v0,6
  • syscall # On saisit la valeur float
  • mov.s $f1,$f0 # On transfère le contenu du registre f0 dans le registre f1
  • saisie_secu1 :
  • li $v0,4 # On "fait pointer" le registre a0 sur la zone mémoire str2
  • la $a0,saisie_nombre1
  • syscall # On affiche saisie_nombre1
  • li $v0,6
  • syscall # On saisit la valeur float
  • mov.s $f2,$f0 # On transfère le contenu du registre f0 dans le registre f2
  • saisie_secu2 :
  • li $v0,4
  • la $a0,saisie_nombre # On "fait pointer" le registre a0 sur la zone mémoire str1
  • syscall # On affiche saisie_nombre
  • li $v0,6
  • syscall # On saisit la valeur float
  • mov.s $f1,$f0 # On transfère le contenu du registre f0 dans le registre f1
  • jal carre
  • #---------------------------********Erreur dans la saisie des choix*****-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------#
  • erreur_utilisateur :
  • li $v0,4 # On "fait pointer" le registre a0 sur la zone mémoire str2
  • la $a0,erreur_saisie
  • syscall # On affiche saisie_nombre1
  • #--------------------------********Branchements aux fonctions********---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------#
  • lb $t2,choix1
  • beq $t1,$t2,somme # Si l'utilisateur a tape 1 , on appelle la fonction somme
  • lb $t2,choix2
  • beq $t1,$t2,difference # Si l'utilisateur a tape 2 , on appelle la fonction difference
  • lb $t2,choix3 # Si l'utilisateur a tape 3 , on appelle la fonction produit
  • beq $t1,$t2,produit
  • lb $t2,choix4 # Si l'utilisateur a tape 3 , on appelle la fonction division
  • beq $t1,$t2,division
  • #--------------------------********Choix apres calcul********-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------#
  • saisie_apres :
  • li $v0,4 # On "fait pointer" le registre a0 sur la zone mémoire str2
  • la $a0,str1
  • syscall # On affiche str1
  • li $v0,4 # On "fait pointer" le registre a0 sur la zone mémoire str2
  • la $a0,str2
  • syscall # On affiche str2
  • li $v0,4 # On "fait pointer" le registre a0 sur la zone mémoire str2
  • la $a0,str8
  • syscall # On affiche str8
  • li $v0,5
  • syscall # On saisit la valeur entiere
  • move $a3,$v0 # On transfère le contenu du registre v0 dans le registre a3
  • lb $t3,choix8
  • beq $t3,$a3,menu # Si l'utilisateur a tape 1 , on affiche le menu principal
  • lb $t3,choix9
  • beq $t3,$a3,fin # Si l'utilisateur a tape 1 , on quitte le programme
  • #--------------------------********Saisie des options en construction********-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------#
  • option :
  • li $v0,4 # On "fait pointer" le registre a0 sur la zone mémoire str2
  • la $a0,str10
  • syscall # On affiche str10
  • jal saisie_apres
  • #--------------------------********Fonctions********--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------#
  • somme : # Fonction somme #
  • add.s $f3,$f2,$f1 # Effectue la somme x + y
  • li $v0,4
  • la $a0,str3 # On "fait pointer" le registre a0 sur la zone mémoire str3
  • syscall # On affiche str3
  • mov.s $f12,$f3 # On transfère le contenu du registre f3 dans le registre f12
  • li $v0,2
  • syscall # On affiche la valeur de x + y
  • jal saisie_apres
  • difference : # Fonction difference #
  • sub.s $f3,$f1,$f2 # Effectue la somme x - y
  • li $v0,4
  • la $a0,str4 # On "fait pointer" le registre a0 sur la zone mémoire str3
  • syscall # On affiche str3
  • mov.s $f12,$f3 # On transfère le contenu du registre f3 dans le registre f12
  • li $v0,2
  • syscall # On affiche la valeur de x - y
  • jal saisie_apres
  • produit : # Fonction produit #
  • mul.s $f3,$f1,$f2 # Effectue la somme x * y
  • li $v0,4
  • la $a0,str5 # On "fait pointer" le registre a0 sur la zone mémoire str3
  • syscall # On affiche str3
  • mov.s $f12,$f3 # On transfère le contenu du registre f3 dans le registre f12
  • li $v0,2
  • syscall # On affiche la valeur de x * y
  • jal saisie_apres
  • division : # Fonction division #
  • div.s $f3,$f1,$f2 # Effectue la somme x / y
  • li $v0,4
  • la $a0,str6 # On "fait pointer" le registre a0 sur la zone mémoire str3
  • syscall # On affiche str6
  • mov.s $f12,$f3 # On transfère le contenu du registre f3 dans le registre f12
  • li $v0,2
  • syscall # On affiche la valeur de x / y
  • jal saisie_apres
  • carre : # Fonction carre #
  • mul.s $f3,$f1,$f1 # Effectue le produit x * x
  • li $v0,4
  • la $a0,str9 # On "fait pointer" le registre a0 sur la zone mémoire str3
  • syscall # On affiche str9
  • mov.s $f12,$f3 # On transfère le contenu du registre f3 dans le registre f12
  • li $v0,2
  • syscall # On affiche la valeur de x * x
  • jal saisie_apres
  • fin : li $v0,4
  • la $a0,str7 # On "fait pointer" le registre a0 sur la zone mémoire str3
  • syscall # On affiche str6
  • li $v0,10
  • syscall # Fin du programme
	.data

str1 : 	.asciiz "\n\n\t8:Menu Principal"
str2 :	.asciiz "\n\t9:Quitter"
str3 :	.asciiz	"\nLa somme des 2 nombres donne : "
str4 :  .asciiz "\nLa difference des 2 nombres donne : "
str5 :	.asciiz "\nLe produit des 2 nombres donne : "
str6 :	.asciiz "\nLa division des 2 nombres donne : "
str7 : 	.asciiz "\nMerci d'avoir utilise ma calculatrice..."
str8 :	.asciiz "\n\n\tVeuillez saisir votre choix : "
str9 : 	.asciiz "\nLe carre de votre nombre est : "
str10 : .asciiz "\n\tOption en cours de construction..."
erreur_saisie : .asciiz"\n\tSaisie ne correspondant pas a un des choix proposes..."
ch3 :  	.asciiz "\n\nProgramme de gestion de fonctions mathématiques\n\n"
ch4 :  	.asciiz "\n\n\tFonctions à calculer : \n\n\t1)Somme de 2 nombres\n\t2)Différence de 2 nombres\n\t3)Produit de 2 nombres\n\t4)Division de 2 nombres\n\t5)Carré d'un nombre\n\t6)Racine carrée d'un nombre\n\t7)Calcul du factorielle d'un nombre (n!)\n\t\n\n\t\t\t\tYouss Prod.\n\n\tVeuillez saisir votre choix : "
ch12 : 	.asciiz "\nMerci d'avoir utilisé mon programme...\n"
saisie_nombre :	.asciiz	"\nVeuillez saisir la valeur de x : "
saisie_nombre1:	.asciiz	"\nVeuillez saisir la valeur de y : "

zero :  .float 0.0

	choix1 : .byte 1
	choix2 : .byte 2
	choix3 : .byte 3
	choix4 : .byte 4
	choix5 : .byte 5
	choix6 : .byte 6
	choix7 : .byte 7
	choix8 : .byte 8
	choix9 : .byte 9

	.text
	.globl main

main : 
	
menu :		
	lwc1 $f1,zero
	lwc1 $f2,zero
	lwc1 $f3,zero

	li $a3,0
	li $t1,0
	li $t2,0
	li $t3,0

	li	$v0,4		
	la	$a0,ch4 	 # On "fait pointer" le registre a0 sur la zone mémoire ch4
	syscall			 # On affiche ch4

	li	$v0,5	
	syscall			 # On saisit la valeur entiere

	move $a3,$v0		 # On transfère le contenu du registre v0 dans le registre a3

	lb $t1,choix1
	beq $t1,$a3,saisie_secu  # Si l'utilisateur tape 1 , on appelle la fonction saisie

	lb $t1,choix2
	beq $t1,$a3,saisie_secu  # Si l'utilisateur tape 2 , on appelle la fonction saisie

	lb $t1,choix3
	beq $t1,$a3,saisie_secu  # Si l'utilisateur tape 3 , on appelle la fonction saisie

	lb $t1,choix4
	beq $t1,$a3,saisie_secu  # Si l'utilisateur tape 4 , on appelle la fonction saisie

	lb $t1,choix5
	beq $t1,$a3,saisie_secu2 # Si l'utilisateur tape 5 , on appelle la fonction saisie
	
	lb $t1,choix6
	beq $t1,$a3,option 	 # Si l'utilisateur tape 6 , on appelle la fonction saisie
	
	lb $t1,choix7
	beq $t1,$a3,option 	 # Si l'utilisateur tape 7 , on appelle la fonction saisie

	lb $t1,choix8
	beq $t1,$a3,fin 	 # Si l'utilisateur tape 8 , on quitte

	jal erreur_utilisateur   # Si l'utilisateur tape un choix non propose par le programme

	jal menu		 # Puis retour au menu

#--------------------------********Saisie des nombres********-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------#
saisie_secu : 
		li	$v0,4		
		la	$a0,saisie_nombre # On "fait pointer" le registre a0 sur la zone mémoire str1
		syscall			  # On affiche saisie_nombre

		li	$v0,6	
		syscall			# On saisit la valeur float
	
		mov.s	$f1,$f0		# On transfère le contenu du registre f0 dans le registre f1

saisie_secu1 : 
		li	$v0,4		# On "fait pointer" le registre a0 sur la zone mémoire str2
		la	$a0,saisie_nombre1	
		syscall			# On affiche saisie_nombre1

		li	$v0,6	
		syscall			# On saisit la valeur float

		mov.s 	$f2,$f0		# On transfère le contenu du registre f0 dans le registre f2

saisie_secu2 : 
		li	$v0,4		
		la	$a0,saisie_nombre # On "fait pointer" le registre a0 sur la zone mémoire str1
		syscall			  # On affiche saisie_nombre

		li	$v0,6	
		syscall			# On saisit la valeur float
	
		mov.s	$f1,$f0		# On transfère le contenu du registre f0 dans le registre f1
		
		jal carre
#---------------------------********Erreur dans la saisie des choix*****-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------#
erreur_utilisateur :
		li	$v0,4		# On "fait pointer" le registre a0 sur la zone mémoire str2
		la	$a0,erreur_saisie	
		syscall			# On affiche saisie_nombre1

#--------------------------********Branchements aux fonctions********---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------#
		lb $t2,choix1
		beq $t1,$t2,somme	# Si l'utilisateur a tape 1 , on appelle la fonction somme

		lb $t2,choix2
		beq $t1,$t2,difference	# Si l'utilisateur a tape 2 , on appelle la fonction difference

		lb $t2,choix3		# Si l'utilisateur a tape 3 , on appelle la fonction produit
		beq $t1,$t2,produit

		lb $t2,choix4		# Si l'utilisateur a tape 3 , on appelle la fonction division
		beq $t1,$t2,division

#--------------------------********Choix apres calcul********-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------#
saisie_apres : 
		li	$v0,4		# On "fait pointer" le registre a0 sur la zone mémoire str2
		la	$a0,str1	
		syscall			# On affiche str1
		
		li	$v0,4		# On "fait pointer" le registre a0 sur la zone mémoire str2
		la	$a0,str2	
		syscall			# On affiche str2

		li	$v0,4		# On "fait pointer" le registre a0 sur la zone mémoire str2
		la	$a0,str8	
		syscall			# On affiche str8
		
		li	$v0,5	
		syscall			# On saisit la valeur entiere

		move $a3,$v0		# On transfère le contenu du registre v0 dans le registre a3

		lb $t3,choix8
		beq $t3,$a3,menu	# Si l'utilisateur a tape 1 , on affiche le menu principal

		lb $t3,choix9
		beq $t3,$a3,fin		# Si l'utilisateur a tape 1 , on quitte le programme	

#--------------------------********Saisie des options en construction********-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------#
option : 
	li	$v0,4		# On "fait pointer" le registre a0 sur la zone mémoire str2
	la	$a0,str10	
	syscall			# On affiche str10
	
	jal saisie_apres
#--------------------------********Fonctions********--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------#

somme : # Fonction somme #

	add.s	$f3,$f2,$f1	# Effectue la somme x + y
	
	li	$v0,4		
	la	$a0,str3 	# On "fait pointer" le registre a0 sur la zone mémoire str3
	syscall			# On affiche str3

	mov.s	$f12,$f3	# On transfère le contenu du registre f3 dans le registre f12
	li	$v0,2		
	syscall			# On affiche la valeur de x + y

	jal saisie_apres

difference : # Fonction difference #

	sub.s	$f3,$f1,$f2	# Effectue la somme x - y
	
	li	$v0,4		
	la	$a0,str4 	# On "fait pointer" le registre a0 sur la zone mémoire str3
	syscall			# On affiche str3

	mov.s	$f12,$f3	# On transfère le contenu du registre f3 dans le registre f12
	li	$v0,2		
	syscall			# On affiche la valeur de x - y

	jal saisie_apres

produit : # Fonction produit #

	mul.s	$f3,$f1,$f2	# Effectue la somme x * y
	
	li	$v0,4		
	la	$a0,str5 	# On "fait pointer" le registre a0 sur la zone mémoire str3
	syscall			# On affiche str3

	mov.s	$f12,$f3	# On transfère le contenu du registre f3 dans le registre f12
	li	$v0,2		
	syscall			# On affiche la valeur de x * y

	jal saisie_apres

division : # Fonction division #

	div.s	$f3,$f1,$f2	# Effectue la somme x / y
	
	li	$v0,4		
	la	$a0,str6 	# On "fait pointer" le registre a0 sur la zone mémoire str3
	syscall			# On affiche str6

	mov.s	$f12,$f3	# On transfère le contenu du registre f3 dans le registre f12
	li	$v0,2		
	syscall			# On affiche la valeur de x / y
	
	jal saisie_apres

carre :  # Fonction carre #
	
	mul.s	$f3,$f1,$f1	# Effectue le produit x * x
	
	li	$v0,4		
	la	$a0,str9 	# On "fait pointer" le registre a0 sur la zone mémoire str3
	syscall			# On affiche str9

	mov.s	$f12,$f3	# On transfère le contenu du registre f3 dans le registre f12
	li	$v0,2		
	syscall			# On affiche la valeur de x * x
	
	jal saisie_apres

fin :	li	$v0,4		
	la	$a0,str7	# On "fait pointer" le registre a0 sur la zone mémoire str3
	syscall			# On affiche str6

	li	$v0,10	
	syscall			# Fin du programme

 Conclusion

Ce code mérite de faire plus de fonctions mais j'y travaille dessus pour offrir plus de fonctionnalités...

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • Copie de Menu 2004 (Définitif).sTélécharger ce fichier [Réservé aux membres club]9 012 octets

Télécharger le zip


 Sources de la même categorie

Source avec Zip MOT PALINDROME par Tinsalhi
EXECUTE /USR/BIN/ID par 0x0syscall
BIBLIOTHEQUE POUR LE 8086 par flory_
.:| CONVERSION D'UNE CHAINE EN MAJUSCULE |:. par fenkouch
PROGRAMME DE TRI (CROISSANT) D'UN TABLEAU EN ASSEMBLEUR DU D... par monticarlo

Commentaires et avis

Commentaire de AlexMAN le 14/08/2004 20:55:08

On dirait un desassembly made in vc++..pkoi prefere tu programmer en "langage machine" pluto ken ASM ? (ptet est ce pareil, mais ca m'etonnerait, vu les mnemoniques...).
L'asm est dur, mais pour moi, certainement plus claire que ca.Je te critique pas, c'est juste mon point de vue :)

++

Commentaire de GeneralDragon le 15/08/2004 02:40:33

Lol, mais c'est du code MIPS ca ! c'est pas du code x86, je pige pas ce que ca viens faire ici ???

Commentaire de BruNews le 15/08/2004 11:11:17 administrateur CS

AlexMAN> pas du tout du 'code machine', ce MIPS est un pseudo assembleur s'executant dans un interpreteur.

Pourquoi ne pas faire directement du vrai ASM pour PC ?

Commentaire de Je sais pas le 15/08/2004 13:46:47

Bonjour tout le monde oui c'est effectivement du MIPS mais moi je ne connais pas le langage ASM...donc n'en soyez pas étonnés.

Commentaire de BruNews le 15/08/2004 13:52:03 administrateur CS

OK alors faut t'y mettre, ça te liberera de PCSpim.

Commentaire de panpan82 le 26/04/2006 16:59:45

bonjour je suis étudiant et je dois réaliser une calculatrice en assembleur vax avec utilisation de smg pour l'affichage sous vms
je vais bien regarder ton code pour me permettre de démarrer mais vous
avez de bons conseils à me donner je suis preneur!
merci

Commentaire de bingo06260 le 16/02/2009 13:36:36

salut, merci pour le code , mai dans le 8086 en utlise deux adresse, pas a trois adresse comme tu la utlise la ; merci

 Ajouter un commentaire




Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales