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 16-bits Assembleur Discussion :

Utilité de la pile - directive dup()


Sujet :

x86 16-bits Assembleur

  1. #1
    Débutant  
    Inscrit en
    Décembre 2008
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 163
    Points : 41
    Points
    41
    Par défaut Utilité de la pile - directive dup()
    Bonsoir,
    que permet de faire la directive dup(?) ??
    Pouvez-vous m'expliquer cette instruction :
    Aussi, j'ai une autre question : quelle est l'utilité de la pile et quand est-ce qu'on l'utilise ?

    Merci

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 375
    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 375
    Points : 23 634
    Points
    23 634
    Par défaut
    Bonsoir,

    Citation Envoyé par thouraya24 Voir le message
    bonsoir, qu'est ce qu'elle permet de faire dup(?) ??pouvez vous m'expliquez cette instruction: DW 80 DUP(?)
    Tu aurais pu chercher un peu.
    « dup », c'est Duplicate. Cela sert à réserver 80 mots (DW) dont la valeur n'est pas initialisée (si tu veux fixer leur valeur, tu la passes en paramètre à dup à la place du point d'interrogation).

    aussi, j'ai une autre question:c'est quoi l'utilité de la pile et quand est ce qu'on l'utilise?
    On l'utilise tout le temps. La « pile » est une structure dans laquelle les dernières données entrées sont les premières à ressortir, comme dans une pile d'assiettes, par exemple. Elle est matérialisée en assembleur par un registre qui pointe l'adresse où stocker ou lire une donnée, auquel on retranche la taille de la donnée à empiler juste avant de le faire, et auquel on ajoute cette même taille après avoir dépilé la donnée.

    Ça sert principalement à appeler un sous-programme avec CALL (pour, par exemple, appeler une fonction), auquel cas on empile l'adresse de retour, mais également à sauver temporairement des registres quand on rentre dans une procédure, ou encore à implémenter les variables locales. C'est également un moyen simple d'allouer de la mémoire temporairement et en quantité limitée).

  3. #3
    Débutant  
    Inscrit en
    Décembre 2008
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 163
    Points : 41
    Points
    41
    Par défaut
    merci beaucoup,

    En fait, j'ai demandé l'utilité de la pile parce que je veux faire executer un tout petit programme en assembleur, mais ça ne marche pas. Le voila :

    Code asm : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    data segment
    val1 equ 2
    val2 equ 3
    data ends
    code segment
    debut: assume cs:code
    mov ax,val1
    mov bx,val2
    add ax,bx
    code ends
    end debut

    J'ai fait sa compilation, l'édition des liens (à ce stade il m'affiche un warning "no stack") et il n'exécute rien, sachant que je veux faire l'addition de deux constantes.

    Merci.

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 375
    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 375
    Points : 23 634
    Points
    23 634
    Par défaut
    C'est normal que ton compilo t'avertisse que tu n'as pas déclaré de pile. Tu n'en as pas forcément besoin, mais il faut te passer de CALL et des interruptions ! Il faut être sûr de soi !

    Par contre, c'était fréquent lorsque l'on écrivait des programmes *.COM sous DOS car les segments de code, de données et de pile étaient tous trois le même (le pointeur de pile étant initalisé en fin de segment). Ça ne dispensait pas de le dire explicitement au compilo mais si on le ne le faisait pas, le code produit s'exécutait quand même dans des conditions légales une fois produit.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Sur l'utilité d'une allocation sur la pile
    Par deubelte dans le forum C++
    Réponses: 7
    Dernier message: 31/08/2010, 11h41
  2. Direct Graphics
    Par Blustuff dans le forum DirectX
    Réponses: 9
    Dernier message: 28/10/2002, 04h19
  3. Hors série PCTEAM sur Direct 3D
    Par Shakram dans le forum DirectX
    Réponses: 1
    Dernier message: 12/10/2002, 16h34
  4. [TASM] Déclarer le segment de pile
    Par cipher dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 01/10/2002, 03h58
  5. La communauté Direct X est au repos?
    Par Shakram dans le forum DirectX
    Réponses: 21
    Dernier message: 18/07/2002, 23h32

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