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 :

Pile en assembleur besoin d'aide


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 31
    Points : 7
    Points
    7
    Par défaut Pile en assembleur besoin d'aide
    Bonjour ,

    J'aurais besoin d'aide pour écrire en assembleur un code qui vas permettre d'inverser 2 à 2 les lettres d'une chaine de caractères , à l'aide d'une pile pointée par %rsp .
    Si quelqu'un peut m'aider à commencer , car je ne sais pas par ou commencer .
    Merci à vous

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 429
    Points : 43 052
    Points
    43 052
    Par défaut
    Pourquoi passer par la pile ? Tu charges les deux lettres dans un registre 16 bits exemple lodsw avec l'adresse de la chaine dans rsi->ax contiendra tes deux caractères et tu récupères les deux octets dans les registres 8 bits (dans l’exemple al et ah) dans l'ordre que tu veux. Tu peux même les swapper avec des opcodes, puis réécrire avec stosw adresse de destination dans rdi.

    Si tu veux passer par la pile, je crois qu'en 64 bits, la pile doit être alignée sur 4 octets, il te faut donc empiler 32 bits pour une charge utile de 8 bits (1 caractère) et jouer avec les adresses de pile pour en récupérer les éléments dans un ordre différent de l'empilement. donc à moins d'un exercice...
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Bonjour,
    Citation Envoyé par chrtophe Voir le message
    donc à moins d'un exercice...
    Ce qui est manifestement le cas
    Si les cons volaient, il ferait nuit à midi.

  4. #4
    Membre confirmé Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    Mars 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : passe le balais et l'aspirateur

    Informations forums :
    Inscription : Mars 2008
    Messages : 314
    Points : 550
    Points
    550
    Par défaut
    je ne comprend pas exactement ce qui doit être fait mais je dirait que pour bien commencer il faut comprendre ce qu'est une pile et ce quelle fait exactement

    la pile c'est une LIFO (last in first out) une sorte de zone tampon ou les premières données sortie sont les dernière données entrée
    pour manipuler les données de la pile, on utilise 2 instructions:
    PUSH qui empile les données (entre les données dans la pile)
    POP qui dépile les données (sort les données de la pile)

    pour comprendre ce que fait push et pop exactement on peu remplacer chaques instructions par une équivalence

    "push eax" peut être remplacé par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sub esp,4 
    mov ss:[esp],eax
    "pop eax" peut être remplacé par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mov eax,ss:[esp]
    add esp,4

Discussions similaires

  1. Bonjour ! Besoin d'aide sur un code assembleur.
    Par Quent49100 dans le forum Programmation système
    Réponses: 2
    Dernier message: 13/06/2016, 19h09
  2. Besoin d'aide pour un exercice en assembleur
    Par rayed dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 13/04/2013, 20h03
  3. besoin d'aide pour un probleme de pile
    Par nebilabd dans le forum Débuter
    Réponses: 3
    Dernier message: 11/04/2009, 23h23
  4. Besoin d'aide pile Cmos
    Par mazoun51 dans le forum Composants
    Réponses: 10
    Dernier message: 11/09/2008, 03h32
  5. [ST6] Besoin d'aide code assembleur
    Par doutsie dans le forum Autres architectures
    Réponses: 16
    Dernier message: 06/02/2006, 16h30

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