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

Assembleur Discussion :

[8086] Instruction mov


Sujet :

Assembleur

  1. #1
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 59
    Points : 47
    Points
    47
    Par défaut [8086] Instruction mov

    Cette écriture est elle incorrecte ?
    Pourquoi c'est incorrect?, si c'est le cas selon vous bien sur
    -Je travaille avec le 8086-
    J'espère que quelqu'un à une réponse à ma question
    Merci à tous

  2. #2
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    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 937
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    Il s'agit d'un adressage indexé tout-à-fait correct.
    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]

  3. #3
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 59
    Points : 47
    Points
    47
    Par défaut
    Salut,
    Ok, merci pour ta réponse alcatîz, mais ya t-il pas de probléme par hasard quand il s'agit du registre AL ,si c'est le cas pourquoi??, si ce n'est pas le cas,bein tant mieux
    D'avance,Merci!

  4. #4
    Membre actif Avatar de Nyarlathotep
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 174
    Points : 217
    Points
    217
    Par défaut
    Il faut que le tableau array soit bien un tableau contenant des bytes, sinon, ça risque de faire n'importe quoi.
    "That is not dead which can eternal lie
    And with strange aeons even death may die"

    The Call of Cthulhu

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

    Ca se voit que tu es une étudiante de monsieur ayache, en tout cas, moi aussi je suis ayachiste.

    l’instruction est incorrecte.

    Je te donne la clé de la bonne reponse, il faut que tu regardes le code machine de l’inst.
    Dernière modification par Rukia ; 03/08/2007 à 10h49.

  6. #6
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    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 937
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par rukia-san
    Alcatiz tu te trompes, l’instruction est incorrecte.

    Je te donne la clé de la bonne reponse, il faut que tu regardes le code machine de l’inst.
    Voici le code machine de l'instruction :
    1000 1000 1000 0100 xxxx xxxx xxxx xxxxb soit 8884xxxxh (x dépendant de Array).

    Où est le problème ?
    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]

  7. #7
    Rukia
    Invité(e)
    Par défaut
    Bonjour Alcatiz,

    C'est une instruction de type "MOV MEM,ACCUMELATEUR" et l'instruction fait au maximum 3 octets. Dans ce cas ARRAY est une variable, ce n'est pas un tableau donc la génération en code machine est de la forme :
    1010 0010 xxxx xxxx xxxx xxxxb (x dépendant de array).

    Amicalement
    Dernière modification par Juju_41 ; 27/02/2007 à 18h23. Motif: style SMS, orthographe

  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Février 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    tout le monde.

    Personnellement je ne vois pas qu'il y a 1 bp dans l'instruction, elle parait tout a fait juste

    Citation Envoyé par rukia-san
    Alcatiz tu te trompes, l’instruction est incorrecte.

    Je te donne la clé de la bonne reponse, il faut que tu regardes le code machine de l’inst
    S'il te plait, Rukia, peux-tu être plus explicite ? et comme a dit Alcatîz où est le bp dans le code machine (ce n'est pas clair) ??


  9. #9
    Rukia
    Invité(e)
    Par défaut
    Bonjour info_net

    Je ne peux pas être plus explicite que ça.
    L'instruction mov array[si],al est incorrecte et j'ai donné le code machine de la bonne instruction : mov array,al est de type mov memoire,accumulateur ce n'est pas mov memoire,registre et entre les 2 il y a une grande différence.

    Remarque : on travaille avec la machine 8086
    Dernière modification par Juju_41 ; 27/02/2007 à 18h29. Motif: style SMS, orthographe

  10. #10
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 59
    Points : 47
    Points
    47
    Par défaut
    Oui, peut être, mais là je ne trouve pas encore de réponse. Ta réponse je l'ai bien saisie mais il y a toujours des ambiguités vu que le code machine que Alcatîz a proposé n'est pas à 100% faux (selon ma logique bien sur), donc ça peut marcher

  11. #11
    Rukia
    Invité(e)
    Par défaut
    Tu sais lilya je ne sais pas ou est ton problème.

    C'est vrai que AX est un registre et en même temps un accumulateur mais en génération en code machine il y a une difference entre un simple registre et
    l'accumulateur (selon vous pourquoi il y a "mov mem,acc" et "mov mem,reg" ?)
    Dernière modification par Juju_41 ; 27/02/2007 à 18h35. Motif: style SMS, orthographe

  12. #12
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 59
    Points : 47
    Points
    47
    Par défaut
    Bon, encore un détail Rukia, si tu me confirmes que la génération du code machine de cette instruction ne se fait qu'en utilisant le code machine du mov memoire,acc (1010001W depl.bas depl.haut) SEULEMENT,
    (je veux dire par là que l'utilisation du code machine mov memoire,reg
    100010DW MOD REG R/M depl.bas depl.haut est impossible et incorrecte)

    Là, je serai entièrement d'accord avec toi, vu qu'on va perdre l'information qui concerne le si. Voilà

    Donc à toi de nous donner une preuve formelle Rukia parceque là ce n'est
    pas encore gagné

  13. #13
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 59
    Points : 47
    Points
    47
    Par défaut
    Oui, c'est clair qu'il y a une petite différence, mais est-ce que c'est interdit d'utiliser le 1er code quand il s'agit de l'accumulateur ?

    Personnellement, je dirai que c'est plutot possible , je ne vois pas ce qui nous interdit de le faire, même s'il s'agit de l'accumulateur ax, ça reste un registre après tout.

    Conclusion : ce n'est pas interdit d'utiliser le 1er code, ça reste toujours une possibilité

  14. #14
    Rukia
    Invité(e)
    Par défaut
    En tant que simple utilisatrice je sais que :

    1/ Si j ai l’instruction MOV avec l’accumulateur AX j’utilise mov mem,acc
    2/ Si j ai l’instruction MOV avec un autre registre j’utilise mov mem,reg
    Dernière modification par Juju_41 ; 27/02/2007 à 18h42. Motif: style SMS

  15. #15
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 59
    Points : 47
    Points
    47
    Par défaut
    En ce qui concerne la possibilité d'utiliser le 1er code avec l'accumulateur, la question reste ouverte. Je te comprends, on ne peut pas avoir une réponse tout de suite, espérons que quelqu'un aura une explication à nous soumettre

    Tant qu'on ne trouve pas une solution à cette question là, je ne peux pas admettre que ta réponse est juste.

    Dans tous les cas, un grand merci pour tes réponses, ça m'a vraiment aidé et je crois qu'on est sur la bonne voie

  16. #16
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    L'instruction donnée en exemple dépend des assembleurs (TASM ...)

  17. #17
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 59
    Points : 47
    Points
    47
    Par défaut
    Salut,

    Bon, l'instruction que j'ai citée
    est CORRECTE

    @ rukia-sun : en fait l'instruction est incompatible avec le code généré par mov mem,acc mais en utilisant le code du mov mem,reg, il n'y aura aucun problème, c'est confirmé

    Donc, collègue ,si tu regardes les feuilles d'instructions du 8086 (Appendix D 8086/8088 instruction set reference data), tu verras que l'anomalie que le prof nous a signalé revient à dire que l'exemple qui a été donné par l'auteur dans le cas d'un mov memory,accumulateur (BYTES=3) n'est pas à sa place
    (il est précisé par l'auteur dans la 1ère colonne que l'on doit générer le code en utilisant le mov mem,acc), l'auteur s'est trompé dans le choix de son exemple.
    Sinon l'instruction, elle est correcte et son code peut être généré sans recontrer le probleme du SI.

    Donc pour le mov memory,acc on doit changer le coding, exemple en faisant un mov array,al.

    Si tu fais correspondre le meme exemple mov array[si],AL à la ligne mov memory,register (5ème ligne). On ne va pas dire que c'est incorrect après tout, et là, ça prouve que l'instruction en elle meme est correcte.

    Donc en conclusion, ce n'est pas l'instruction qui est fausse mais l'EXEMPLE - l'auteur n'a pas choisi le bon exemple - voilà

  18. #18
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    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 937
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut
    Je confirme bien qu'en prenant l'opcode de l'instruction
    il est impossible de coder l'adressage indexé [si] sans le groupe mod-R/M.
    Donc, il faut prendre l'opcode de l'instruction générale
    même si le registre est l'accumulateur.
    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]

  19. #19
    Rukia
    Invité(e)
    Par défaut
    Bonjour
    Merci alcatiz tu ma bien éclairci les idées et pour toi lylia
    Dernière modification par Rukia ; 03/03/2007 à 17h41.

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

Discussions similaires

  1. Instruction mov en code machine
    Par elendile dans le forum Assembleur
    Réponses: 1
    Dernier message: 06/01/2011, 16h49
  2. Réponses: 3
    Dernier message: 27/03/2008, 12h19
  3. Réponses: 3
    Dernier message: 24/03/2008, 21h21
  4. Réponses: 6
    Dernier message: 10/03/2008, 21h27
  5. [8086] Instruction dec
    Par lylia SI dans le forum Assembleur
    Réponses: 2
    Dernier message: 31/01/2007, 16h56

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