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

Assembleur Discussion :

Questions sur equ & dup


Sujet :

Assembleur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Par défaut Questions sur equ & dup
    Bonjour ,

    je voudrais savoir à quoi servent
    les mots "equ" et "dup" et comment on s'en sert ?!

    Merci par avance.

  2. #2
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Par défaut
    Bonjour,

    Citation Envoyé par SimpleMe
    Bonjour ,

    je voudrais savoir à quoi servent
    les mots "equ" et "dup" et comment on s'en sert ?!

    Merci par avance.
    Pour equ (qui signifie "equate") il s'agit ni plus ni moins de dire au programme assembleur (plus exactement à son préprocesseur) qu'un token possède une valeur spécifique.

    Pour faire un parallèle avec le C ou le C++ il s'agit ni plus ni moins que d'un #define.

    exemple (syntaxe MASM):

    Code asm : 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
     
    .686p
    .model flat, stdcall  ;32 bit memory model
    option casemap :none  ;case sensitive
     
    .const ; constante
     
         Foo equ 42 ; Foo vaut 42
     
         TRUE equ 1 ; TRUE vaut 1
         FALSE equ 0 ; FALSE vaut 0
     
         Calc equ 6.1 + 0.9   ; Calc vaut 7.0 (l'expression est évaluée !)
     
         Bla equ '0' ; Bla vaut le caractère '0' (soit 0x30)
         Bla2 equ <Bla> ; (String Equate) Bla2 vaut Bla => Bla2 vaut '0'
     
     
    .code
    start:
         ; le préprocesseur remplace FALSE par 0
         ; ce qui revient à : mov eax, 0
         mov eax, FALSE 
     
         ; mov ebx, 1
        mov ebx, TRUE
     
         ; cmp edx, 42
        cmp edx, Foo
     
        ; mov esi, 30h
        mov esi, Bla
     
         ; mov edi, 30h
         mov esi, Bla2
     
     
    end start

    --------------

    En ce qui concerne dup (pour "duplicate"), cela consiste à dupliquer (répéter un certains nombre de fois) une valeur.

    Imaginons que je veuille remplir un tableau statique avec 256 fois l'octet 0x42. Plutôt que d'écrire 256 fois l'octet 0x42, je peux le faire avec dup :

    Code Asm : 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
     
    .686p
    .model flat, stdcall  ;32 bit memory model
    option casemap :none  ;case sensitive
     
    .data ; données initialisées
     
    Tableau BYTE 256 dup (42h)  ; Tableau est un tableau de 256 octets initialisés à 0x42.
     
    Array BYTE 4 dup(30h, 31h) ; Tableau d'octets : 4 fois 0x30 , 0x31
    ; vaut :
    ; Array BYTE 30h, 31h, 30h, 31h, 30h, 31h, 30h, 31h
     
    .data? ; données non initialisées
     
    UnInitArray DWORD 20 dup (?) ; UnInitArray est un tableau non-initialisé de 20 double mots (par défaut chaque double mot est initialisé à 0).

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Par défaut
    Merci beaucoup pour tes explications !

    ca veut dire quoi ".686p"?

    les petits points en début de ligne sont indispensables ?

  4. #4
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Par défaut
    Bonjour,

    Citation Envoyé par SimpleMe
    ca veut dire quoi ".686p"?
    C'est une directive processeur de MASM.

    - 686 indique que l'on peut utiliser le jeu d'instruction des processeurs x86 686 (les derniers en date donc).

    - le "p" indique que l'on peut utiliser les instructions privilégiées.

    les petits points en début de ligne sont indispensables ?
    Oui (nécessaire seulement pour certaines directives), sinon l'assembleur (le programme d'assemblage) ne comprendra pas les directives.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Par défaut
    d'accord, j'ai compris
    merci encore pour tes explications

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

Discussions similaires

  1. [debutant] Questions sur 1 futur projet
    Par cyrull22 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 28/04/2003, 21h49
  2. Quelques questions sur le TWebBrowser...
    Par CorO dans le forum Web & réseau
    Réponses: 3
    Dernier message: 17/01/2003, 21h23
  3. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  4. Réponses: 2
    Dernier message: 11/08/2002, 21h27
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

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