IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

x86 32-bits / 64-bits Assembleur Discussion :

Besoin d'aide pour un exercice en assembleur


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Besoin d'aide pour un exercice en assembleur
    Je n'arrive pas a résoudre cet exercice , svp aidez moi !! merci.
    exercice:

    On se propose de mettre au point un programme pour calculer tous les nombres premiers inférieurs à un nombre N fixé.

    On se propose de procéder ainsi :

    1. On commence par générer une liste d’entiers non soulignés L := [2, 3, 4, . . ., N] ;
    2. Ensuite, tant qu’il existe des nombres non soulignés dans la liste L :
    (a) on souligne le plus petit nombre k de L non encore souligné ;
    (b) pour tout nombre R > k de la liste L :
    – si k est un diviseur de R, alors on supprime l’élément R de la liste ;
    3. La liste L – qui contient maintenant exclusivement des nombres soulignés – est la liste des nombres premiers inférieurs à N.

    Par exemple, si on applique cet algorithme pour N = 30, on obtient successivement les valeurs de L suivantes :

    [2,3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
    [2,3,5,7,9,11,13,15,17,19,21,23,25,27,29],
    [2,3,5,7,11,13,17,19,23,25,29 ],
    [2,3,5,7,11,13,17,19,23,29 ],
    [2,3,5,7,11,13,17,19,23,29 ],
    [2,3,5,7,11,13,17,19,23,29 ],
    [2,3,5,7,11,13,17,19,23,29 ],
    [2,3,5,7,11,13,17,19,23,29 ],
    [2,3,5,7,11,13,17,19,23,29 ],
    [2,3,5,7,11,13,17,19,23,29 ],
    [2,3,5,7,11,13,17,19,23,29 ].

    Travail demandé :

    Deux programmes à réaliser:

    I. Version statique
    — Le programme doit définir une constante N de valeur prédéfinie (sur 2 octets).
    — Le programme doit également réserver N-1 octets à partir d’une adresse Tab et un mot de 2 octets à l’adresse Pges qui va contenir le plus grand élément souligné (c’est à dire le dernier nombre souligné).)
    — Cette suite de N octets peut être vue comme un tableau. Celui-ci est utilisé pour mémoriser les nombres effacés pendant l’exécution de l’algorithme
    — Le programme doit afficher la trace de l’exécution (comme dans l’exemple)

    II. Version Dynamique
    Améliorer le programme pour faire en sorte qu’il fonctionne pour des valeurs de N non fixées. L’utilisateur du programme saisit sur l’entrée standard une valeur pour N et le programme doit afficher tous les nombres premiers inférieurs à N.

    Votre programme doit utiliser les fonctions suivantes pour accéder au tableau :
    Une fonction effacer qui prend en argument un nombre i et positionne la case correspondante du tableau Tab à 0, signifiant que le nombre i est effacé.
    Une fonction marquer qui prend en argument un nombre i et positionne la case correspondante du tableau tab à 1, signifiant que le nombre i n’est pas effacé.
    Une fonction lire qui prend en argument un nombre i et retourne dans EAX la valeur de la case correspondante dans le tableau Tab. Une fonction initialiser qui positionne tous les octets du tableau tab à 1. Cette fonction doit aussi positionner la variable Pges à la valeur 0 pour spécifier qu’aucun nombre du tableau n’est souligné.

    Vous devez remettre une copie de votre Projet en Visual Studio avec le code clairement commenté. Un document de 5 pages au maximum expliquant l’implémentation de votre deux programmes

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 620
    Points
    23 620
    Par défaut
    Bonsoir,

    Il est essentiel que tu lises ce qui suit et que tu nous donnes les informations qui y sont spécifiées. Sans cela, on ne pourra pas t'aider.
    http://www.developpez.net/forums/d73...avant-decrire/

    Ensuite, on peut t'aider à avancer mais il est hors de question qu'on fasse ton travail à ta place. Donc, montre-nous ici ce que tu as écrit jusque là (avec les balises [code] et [/code]) et on tâchera de t'aider.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    INCLUDE Lib32.inc
    ;INCLUDE asm_io.inc
    .data
    ;********************data***********************
    N	EQU	30;
    tabl		 BYTE	N DUP(?)
    premier		 BYTE	2,3,5,7,11,13,17,19,23;,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107;,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223 ;,227,229,233,239,241
    ptrpr		 DWORD	0
    Pges		 BYTE	2
    Deux		 BYTE	2
    Pointeur	 WORD	0
    Pointeur2	 WORD	0
    message		 BYTE	"Veuillez entrer une nombre :", 0Ah, 0
    msgdebut	 BYTE	"[",0				;
    virgule		 BYTE	",",0				;
    msgfin		 BYTE	"]", 0Ah, 0			;
    index		 DWORD	0					;
    index2		 DWORD	0					;
    ;***********************************************
    .code
    main PROC
    call Clrscr	
    ;*************************code*******************************
    	mov ebx,OFFSET tabl
    	mov ecx,LENGTHOF tabl
    	xor eax,eax
    	mov al,Deux
    	sub ecx,1
    boucle:
    	mov [ebx],al
    	add ebx,2
    	inc al								;
    	loop boucle
    ;*****************************************
    	mov ebx,OFFSET tabl
    	mov edi,OFFSET premier 
    	mov Pointeur,LENGTHOF tabl
    	xor eax,eax
    	sub Pointeur,3
    	add ebx,4
    debut1:
    	cmp Pointeur,0
    	jbe fin
    	mov index,ebx
    	mov al,BYTE PTR [ebx]
    	mov Pges,al
    	call Supprimer				;Cette Proc Efface tous le Multiple de Pges dans le tableau tabl
    	mov ebx,index
     
    	add ebx,2
     
    	dec Pointeur
    	jmp debut1
    ;*****************************************
     
     
    fin: 
    	call Affiche
    	call ReadInt						;pour stoper le rogramme
     
    main ENDP							;fin du Proc Main 	
     
     
    ;**********************
    Affiche PROC
    	mov esi,OFFSET premier
    	mov edi,LENGTHOF premier
    	xor eax,eax
    	sub edi,1
    	mov Pointeur2,0
    	mov Pointeur2,di
    	mov edx,OFFSET msgdebut
    	call WriteString
    debut:
    		cmp Pointeur2,0
    		jbe fin
    		mov al,[esi]
    		call WriteInt
    		mov edx,OFFSET virgule
    		call WriteString
    		add esi,2
    		sub Pointeur2,1
    		jmp debut
     
    fin:
    	mov edx,OFFSET msgfin
    	call WriteString
    	ret
     
    Affiche ENDP
     
     
     
    ;*********************
     
    Supprimer PROC			;Mettre tous les multiples de Pges a 0
    	xor eax,eax
    	mov ebx,index
    	add ebx,2
    	mov al,BYTE PTR [ebx]
    	add al,Pges
    	mov BYTE PTR[ebx],al
    	call Affiche
    	ret
    Supprimer ENDP
     
     
     
    END main
    Voila le code que j'ai essayé. J'ai un problème au niveau du PROC Supprimer qui a pour rôle de prendre le tableau tabl et mettre tous les multiples de Pges a 0 .

    Et Merci d'avance pour votre aide.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour la reformulation du code mais est ce que quelqu'un a une réponse ou peut m'aider dans ce problème ?

Discussions similaires

  1. besoin d'aide pour un exercice (requêtes sql)
    Par stabii dans le forum Langage SQL
    Réponses: 15
    Dernier message: 30/01/2011, 00h00
  2. Besoin d'aide pour la résolution d'un exercice
    Par alvarogill dans le forum Fortran
    Réponses: 0
    Dernier message: 06/03/2009, 22h02
  3. besoin d'aide pour exercice
    Par aurore973 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/05/2007, 08h14
  4. [Débutant] Besoin d'aide pour un exercice
    Par bebetoalvaro dans le forum Pascal
    Réponses: 9
    Dernier message: 05/02/2007, 01h59
  5. Besoin d'aide pour un exercice sur les registres
    Par zakuza dans le forum Assembleur
    Réponses: 5
    Dernier message: 14/04/2006, 14h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo