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

Programmation d'OS Assembleur Discussion :

[Pépin] Utilisation de EAX, ECX dans le boot sector 16 bits


Sujet :

Programmation d'OS Assembleur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 74
    Points : 41
    Points
    41
    Par défaut [Pépin] Utilisation de EAX, ECX dans le boot sector 16 bits
    Bonjour, je suis entrain de lire le tutoriel de pépin ( http://a.michelizza.free.fr/pmwiki.p....ProtectedMode ) et j'ai une question. Le boot secteur est codé en 16 bit mais il utilise le registre EAX et ECX à plusieurs reprise. Comment est-ce possible ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ; calcule l'adresse lineaire de GDT
        xor eax, eax
        xor ebx, ebx
        mov ax, ds
        mov ecx, eax
        shl ecx, 4
        mov bx, gdt
        add ecx, ebx
        mov dword [gdtptr+2], ecx

  2. #2
    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
    en fait on devrait dire que le programme est codé en préférence 16bit,
    c'est a cause de l'encodage des instruction; chaque instruction en 32bit se code de la meme manère que sont équivalent en 16bit mais avec un préfixe

    quant on dit qu'on code en 16bit ça signifie que les instruction sans préfixe doivent être interprété avec des opérandes 16 bit et inversement en mode 32bit

    le bootloader s'execute en mode réel, comme celui ci tourne en 16bit il faut déclarer au compilateur qu'on est en 16bit

    il n'y a qu'en mode protégé que l'on peut choisir le mode

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 74
    Points : 41
    Points
    41
    Par défaut
    jsuis pas sure de bien comprendre !!!!

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 372
    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 372
    Points : 23 628
    Points
    23 628
    Par défaut
    Citation Envoyé par spiner900 Voir le message
    jsuis pas sure de bien comprendre !!!!
    Ça veut dire qu'en mode réel, le micro-processeur ne sait pas a priori si tu travailles en 16 bits ou en 32. Il n'y a pas de « bit » pour passer de l'un à l'autre comme on le fait entre le mode réel et le mode protégé. En outre, au niveau du langage machine, la plupart des instructions 32 bits ont les mêmes codes-opération que leur homologue 16 bits, mais préfixés par un code fixe, « 66 » :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    00000000    B8 01 00                  mov   ax,1
    00000003 66 B8 01 00 00 00            mov  eax,1
    Par contre, certains modes d'adressage ajoutés avec les versions récentes des micro-processeurs x86 ne fonctionnent que depuis le mode protégé, et qu'avec les registres 32 bits. Et comme les x86, depuis le 386, sont faits pour travailler naturellement en 32 bits (le bus est sur 32 bits, l'utilisation de formats plus petits dans la mémoire implique des opérations internes supplémentaires), eh bien deux grandes tendances ont fini par se distinguer.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 74
    Points : 41
    Points
    41
    Par défaut
    Merci c'est beaucoup plus claire maintenent !

Discussions similaires

  1. [CR] Utilisation de codes à barres dans crystal
    Par franck.cvitrans dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 29/06/2004, 08h48
  2. [servlet][formulaire] utilisation de 2 servlet dans 1 form
    Par luc_pichot dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 26/05/2004, 17h55
  3. utiliser le même fichier dans plusieurs projets vc++6
    Par yannick_sch dans le forum MFC
    Réponses: 5
    Dernier message: 12/02/2004, 17h39
  4. Utilisation de l'unicode dans un algo de cryptage
    Par Zazeglu dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 28/10/2003, 14h38
  5. Réponses: 2
    Dernier message: 24/06/2003, 20h31

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