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 :

registre IP du 8086


Sujet :

x86 16-bits Assembleur

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut registre IP du 8086
    Bonsoir;
    Ma question concerne le rôle du registre ip du 8086. je me dis que puisque l'unité d'exécution prélève la prochaine instruction a partir de la file qui se trouve dans la biu;pourquoi faire pointer ip sur une instruction qui se trouve dans la mémoire centrale? autrement dit est il utile de faire pointer ip sur la prochaine instruction en mémoire alors que celle ci se trouve surement dans la file sauf pour le cas des instructions de saut ?
    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Le BIU contrôle le file d'exécution (de taille 6 octets) et elle utilise CS:IP pour calculer l'adresse physique d'une instruction. Quand il existe 2 octets vides dans la pile, le BIU réalise un IF (Instruction Fetch): incrémenter IP, calculer l'adresse physique de l'instruction, le localiser dans le segment de code et enfin le charger dans le file.

    On peut changer la valeur de IP seulement avec les instructions tel que : JMP, INT, CALL. Quand le EU (Execution Unit) exécute une telle instruction (JMP, INT, CALL), le BIU réinitialiser (RESET) le file, commence la recherche (IF) depuis la nouvelle location pour remplir le file. L'EU prélève les instructions à partir de la file pour les décoder (ID: Instruction Decode) en des opérations élémentaires et les exécuter ensuite.

    Donc, IP (comme l'indique son nom : Instruction Pointer) sert comme un pointeur d'instructions dans le segment de code par le BIU et il est utilisé pour remplir la file.
    Les instructions qui seront exécutées sont les instructions stockées dans la file et ne sont pas celles pointées par IP !

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour ISSAM;
    Je te remercie pour ta réponse qui m'a bien éclairée; mais dans debug ainsi l’émulateur 8086 après chaque exécution IP pointe sur la prochaine instruction a exécuter; et beaucoup de cours le présentent comme cela ? quel est le but a ton avis?
    Merci beaucoup

  4. #4
    Invité
    Invité(e)
    Par défaut
    Pour vérifier ça et pour bien comprendre le fonctionnement du processeur 8086 je vous conseille de lire son manual ici : https://docs.google.com/uc?id=0B9rh9...xport=download

    Vous n'êtes pas obligée de lire tout le manuel!
    Dernière modification par Invité ; 03/11/2013 à 17h52.

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    merci pour le lien ,j'ai maintenant compris et confirmé que ip pointe sur le prochain mot de code a charger dans la file.
    IP est modifié par les instructions qui provoquent une rupture de séquence (saut appel de procédure ETC)
    lorsqu’il est nécessaire de sauvegarder dans la pile l'adresse de retour ce n'est pas la valeur courante de ip qui est sauvegardée mais une valeur ajustée .
    A++

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    lorsqu’il est nécessaire de sauvegarder dans la pile l'adresse de retour ce n'est pas la valeur courante de ip qui est sauvegardée mais une valeur ajustée.
    L'adresse de retour est le contenu de IP. C'est l'adresse de l'instruction qui se trouve juste avant l'instruction CALL votre_prog et qui a été empilé dans la pile avant de transférer le contrôle au sous programme. L'instruction RET va chargé cette adresse dans IP. Ainsi, le BIU va réinitialiser la pile et commencer la recherch depuis l'adresse de retour (Offset) dans le segment de code. Autrement dit la première instruction qui sera chargée dans la file d'exécution par le BIU et après le retour de sous programme est l'adresse de retour!

  7. #7
    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
    lors de l'uttilisation de debug le système uttilise l'exception N°2 (nommé debug en plus) qui appelle l'interruption 1 après chaque instruction (ou juste avant d'executer la suivante)

    attention aux exception car celle ci n'empilent pas forcément le pointeur de l'instruction suivante mais plutôt celuis de l'instruction fautive car les exceptions servent a la gestion des erreurs de programmation (division par zéro, instruction inconnue, etc...) mais bon la gestion des exception n'est pas utile au débutant mais au concepteur de système d'exploitation ou de système embarqué

    a noter que pour rentrer dans le mode debug du processeur (ou mode pas a pas) il faut mettre TF a 1 (bit 8 du registre EFLAGS)

    en ce qui concerne le fait que ip pointe sur une valeur de la mémoire et pas sur un emplacement de la file c'est parce que la file d'instruction du processeur n'est la que pour accèlerer l'execution a la manière d'une mémoire cache et que chaque octet dans la file n'est qu'une image de la mémoire

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

Discussions similaires

  1. [Windows]accès base de registre windows
    Par Greg01 dans le forum API standards et tierces
    Réponses: 27
    Dernier message: 05/06/2007, 15h14
  2. Registre BX (8086)
    Par lylia SI dans le forum Assembleur
    Réponses: 1
    Dernier message: 24/09/2006, 08h56
  3. Accès à la base de registre windows à distance
    Par xavame dans le forum Sécurité
    Réponses: 4
    Dernier message: 13/07/2005, 15h23
  4. registre de connexion windows internet
    Par lafaryan dans le forum Web & réseau
    Réponses: 2
    Dernier message: 21/08/2002, 12h52
  5. Utilisez vous la base de registres ?
    Par gRRosminet dans le forum C++Builder
    Réponses: 8
    Dernier message: 04/06/2002, 13h55

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