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 :

Comment calculer une adresse physique ?


Sujet :

x86 16-bits Assembleur

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Comment calculer une adresse physique ?
    Bonjour, tout le monde.

    J'ai trouvé un probleme pour calculer l'adresse physique dans cet exercice :

    Sachant que l'offset d'une case mémoire qui se trouve au segment 1000h est 0020h, donner son adresse physique. On a la relation

    adresse physique = 16 * segment + offset

    Mais comment la calculer ?

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    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 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Citation Envoyé par princess_peace Voir le message
    bonjour tous le monde
    j'ai trouver un probleme pour calculer l'adresse physique dans cet exercice;
    Sur quel microprocesseur ?
    À en voir la suite, c'est apparemment du 80x86 16 bits.

    sachant que l'offset d'une case mémoire qui se trouve au segment 1000h est 0020h.donner son adresse physique.
    on a la relation
    adresse physique=16*segment+offset
    mais comment la calculer ???????????????????????
    - Un seul point d'interrogation, s'il-te-plaît ;
    - C'est écrit en clair :
    • Segment = 1000h
    • Offset = 0020h
    • Adresse physique = 16 * Segment + offset.


    C'est l'hexadécimal qui t'ennuie ? Sache que 16d = 10h et tout devrait bien aller.

  3. #3
    Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    merci Obsidian
    mais le probléme se pose dans 16, car il est 16 bits, pas 16 décimal ?

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    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 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Citation Envoyé par princess_peace Voir le message
    merci Obsidian. mais le probléme se pose dans 16 car il est 16 bits pas 16 décimal??????
    Re-bonjour,

    Ça ne veut rien dire. « 16 bits », c'est le format de ton registre (ou l'architecture globale de ton microprocesseur). Avec seize bits, tu peux compter de 0 à 65535, soit de 0 à FFFF en hexadécimal.

    Ensuite, l'hexadécimal et le décimal ne sont que deux bases différentes pour écrire le même nombre. C'est comme si tu utilisais les chiffres romains. La valeur reste identique.

    En l'occurence, 16 en décimal s'écrit 10 en hexadécimal. Ton adresse physique s'écrit donc 1000h * 10h + 20h. Difficile de faire plus clair sans te donner carrément la solution.

    Dernier détail (peut-être est-ce ceci qui t'ennuie) : ton adresse physique s'écrira bien sur 20 bits, soit cinq chiffres hexadécimaux. Gérer ce format d'adresse est l'une des deux raisons majeures à l'introduction des segments dans l'assembleur x86 16 bits.

  5. #5
    Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Re-bonjour,

    Ça ne veut rien dire. « 16 bits », c'est le format de ton registre (ou l'architecture globale de ton microprocesseur). Avec seize bits, tu peux compter de 0 à 65535, soit de 0 à FFFF en hexadécimal.

    Ensuite, l'hexadécimal et le décimal ne sont que deux bases différentes pour écrire le même nombre. C'est comme si tu utilisais les chiffres romains. La valeur reste identique.

    En l'occurence, 16 en décimal s'écrit 10 en hexadécimal. Ton adresse physique s'écrit donc 1000h * 10h + 20h. Difficile de faire plus clair sans te donner carrément la solution.

    Dernier détail (peut-être est-ce ceci qui t'ennuie) : ton adresse physique s'écrira bien sur 20 bits, soit cinq chiffres hexadécimaux. Gérer ce format d'adresse est l'une des deux raisons majeures à l'introduction des segments dans l'assembleur x86 16 bits.
    merci bien pour votre aide j'ai compris maintenant le principe .

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

Discussions similaires

  1. [C#] Comment calculer une opération à la volée ?
    Par david71 dans le forum Windows Mobile
    Réponses: 4
    Dernier message: 25/04/2006, 12h34
  2. Comment calculer une dérivée
    Par guintolli dans le forum Mathématiques
    Réponses: 6
    Dernier message: 06/02/2006, 20h05
  3. Réponses: 8
    Dernier message: 13/10/2005, 10h38
  4. Comment tester une adresse mail ?
    Par jackop dans le forum Langage
    Réponses: 5
    Dernier message: 08/09/2005, 16h19
  5. Comment récupérer une adresse MAC ?
    Par psau dans le forum Développement
    Réponses: 7
    Dernier message: 19/07/2002, 17h26

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