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 :

Byte Word Int


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 12
    Points : 12
    Points
    12
    Par défaut Byte Word Int
    Bonjour, voici un court programme en assembleur:

    .data
    debut_data:
    a:
    .byte 4,5
    b:
    .word 3,1,0,1
    c:
    .int 100
    .equ taille, c - debut_data

    En supposant que debut_data = 0x1000, donnez les valeurs de a, b, c et taille en hexadécimal.

    Je n'arrive pas à trouver la bonne réponse complète. Comme pour a ma réponse est 0x0504. Pour b, j'ai 0x0001000000010003. Est-ce que c'est bon?

    Je dois entrer la bonne réponse pour un quiz, mais à chaque fois ça m'affiche que ma réponse est erronée.

    Merci pour votre aide!

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Théoriquement :

    Les deux adresses debut_data et a devront être les mêmes. a est l'adresse du premier octet (contenat la valeur 4) dans un tableau d'octets contigus et de taille égale à 2 octets.

    b est l'adresse du premier mots (16 bit) d'un tableau de mots contigus et de taille égale à 4 mots (8 octets).

    La taille d'un entier en mémoire est 4 octets. c est l'adresse de premier octet.

    Ainsi, votre données sont de taille : 2 + 8 + 4 = 14 octets.

    Donc, si debut_data = 0x1000 alors :

    • a = debut_data = 0x1000
    • b = a + 0x2 = 0x1002
    • c = b + 0x8 = 0x100a
    • taille = c - a = 0xa


    Pratiquement:

    Vous pouvez utiliser la commande Linux : nm -l votre_exe. Voici ce que j'ai eu avec ce commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    08049062 A __bss_start
    08049062 A _edata
    08049064 A _end
    08048054 D _start
    08049054 d a
    08049056 d b
    0804905e d c
    08049054 d debut_data
    0000000a a taille

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Merci beaucoup! Ça fonctionne.

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

Discussions similaires

  1. Convertion byte? to int?
    Par BenoitM dans le forum C#
    Réponses: 6
    Dernier message: 07/09/2011, 15h57
  2. cast Byte into int
    Par hariziCA dans le forum 2D
    Réponses: 4
    Dernier message: 05/05/2010, 11h04
  3. Conversion byte en int et vis versa
    Par Mister Nono dans le forum Langage
    Réponses: 8
    Dernier message: 17/07/2008, 17h50
  4. tableau de byte et int
    Par andromeda dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 28/07/2007, 12h41
  5. conversion Byte[] vers int
    Par skud dans le forum C#
    Réponses: 5
    Dernier message: 17/05/2007, 12h14

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