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 :

Exercice sur le jeu d'instructions Assembleur


Sujet :

x86 16-bits Assembleur

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 1
    Points : 2
    Points
    2
    Par défaut Exercice sur le jeu d'instructions Assembleur
    Bonjour à tous,
    svp je voudrais savoir les explications de la réponse de ces exercices.

    Le 1er :
    A partir de l'adresse 100H, on trouve en mémoire les valeurs hexadécimales suivantes :
    B80048D1E0D1E8D1E8A30080
    Aprés exécution de ces instructions, quelle valeur trouve-t-on à l'adresse 128H ?
    Le 2eme :
    B8000040A30102EBF8
    quel est le résultat de l'exécution de ces instructions ?
    Les données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    instructions        code op       octets
    MOV AX,val          B8            3
    SHR AX,1            D1E8          2    
    SHL AX,1            D1E0          2  
    INC AX              40            1
    JMP adr             EB            2
    MOV(adr), AX        A3            3

  2. #2
    Membre confirmé Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Points : 567
    Points
    567
    Par défaut
    Tu as sûrement eu une documentation ou un programme qui te permet de trouver ça. Sinon sous Windows tu peux utiliser Debug qui est expliqué ici.

    Edit: ah oui, bonjour.
    :wq

  3. #3
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 939
    Points : 59 421
    Points
    59 421
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    Il suffit de suivre la séquence d'octets de code et de retrouver les instructions d'après leur opcode (dans le tableau du bas), en faisant attention à la taille totale de l'instruction.

    Allez, je t'aide à commencer le 1er exercice :

    B8
    D'après le tableau, c'est l'opcode de l'instruction MOV AX, valeur immédiate. L'instruction tient sur 3 octets, donc les 2 octets suivants sont la valeur immédiate à charger dans AX. Attention à l'inversion des deux octets de la valeur immédiate !
    AX contient donc 4800h.

    D1E0
    D'après le tableau, c'est l'opcode de l'instruction SHL AX,1. On opère donc une multiplication du contenu que l'on vient de charger dans le registre AX par 2, par décalage de 1 bit vers la gauche.
    AX contient 9000h.

    D1E8D1E8
    Deux fois le décalage de 1 bit vers la droite SHR AX,1 (division par 2).
    AX contient à présent 2400h.

    ... et ainsi de suite. Juste une chose : il me semble que, pour que l'énoncé ait un sens, il faut déterminer la valeur qui se trouve à l'adresse 128 (décimal) et non 128H... Peux-tu vérifier qu'il n'y a pas d'erreur ? (ou alors je me plante...)
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  4. #4
    Membre actif

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 193
    Points : 277
    Points
    277
    Par défaut
    Salut,
    La réponse en elle même n'a pas une grosse importance.
    La méthode utilisée est beaucoup plus importante.
    le début à l'adresse 100h fait penser à un programme com.
    Utiliser le bon vieux debug 16 bits,écrire les octets tel que,demander a debug de relire la suite d'octets en désassemblant ........
    Evidemment pour faire cela il faut demander à debug quelles sont ces instructions.Ouvrir une fenêtre DOS taper "debug ?",et si un des chemins de recherche pointe sur debug,on a la réponse
    Après un peu d'aprentissage de debug , ça devient facile .....

    ToutEnMasm

  5. #5
    Rukia
    Invité(e)
    Par défaut
    Bonjour
    je t'aide pour le 2éme exercice:
    DB0000 ==> MOV AX,0000==>AX contient 0000
    40 ==> INC AX==>AX contient 0001
    A30102 ==> MOV (adr+0201),0001
    EBF8 ==> JMP F8 , branchement vers l'adresse F8
    j'espère que c'est juste

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/08/2010, 08h52
  2. Exercices sur l'Assembleur MIPS R3000
    Par pmyriam dans le forum Assembleur
    Réponses: 3
    Dernier message: 06/05/2008, 23h38
  3. Jeu d'instructions et petites questions sur l'asm
    Par SimpleMe dans le forum Assembleur
    Réponses: 6
    Dernier message: 16/03/2007, 18h42
  4. Site web sur un jeu d'entraineur
    Par molesqualeux dans le forum Projets
    Réponses: 14
    Dernier message: 23/01/2006, 15h16
  5. Réponses: 4
    Dernier message: 28/07/2005, 16h22

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