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 :

Désassemblage à la main 16 bits / 32 bits


Sujet :

Assembleur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    339
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 339
    Par défaut Désassemblage à la main 16 bits / 32 bits
    Voilà, je fais du désassemblage à la main en ce moment et j'aurais voulu avoir votre avis là-dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    db 26h,66h
    push [si]
    ; autre formule
    db 66h,26h
    push [si]
    ; 3eme formule
    push es:[esi]
    Mon désassembleur me donne la même solution pour les 3 formules. Est-ce vraiment le cas ?

    Deuxième question : D'après les docs que j'ai, si je faisje stocke 16 bits et si je fais je stocke 32 bits. Est-ce vrai aussi ?

    Dernière question : Ma doc est un peu vague là-dessus. Si je faisje stocke combien : 8bits ? 16 bits ? 32 bits? (je pense 16 mais j'en suis pas sûr)

    Merci d'avance pour vos réponses

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Par défaut
    Je peux répondre à la deuxième. Il y a une taille d'operande une taille d'adressage bien séparée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    push [si] ;Taille d'adressage 16 bits
    push [esi] ;Taille d'adressage 32 bits
    mais la taille des données utilisée va dépendre de la taille d'operande courant. Dans un programme 16 bits tu stovkera 16 bits.

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    339
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 339
    Par défaut
    Alors j'ai une autre question : Comment reconnaît-t-on au désassemblage un programme 16bits d'un prog 32 bits ??? Je suppose que c'est dans son en-tête mais ça se trouve où ?

    En plus, si quelqu'un pouvait me filer un petit prog 32 bits sous TASM car mon compilo ne prend pas le 'use 32'.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 92
    Par défaut
    Dans...

    push imm8

    ... on te dit implicitement que ce que tu empiles c'est du 8bytes.
    Parce qu'on l'a très certainement déclaré en tant que tel.
    Mais on aurait aussi pu l'appelé imm8 tout en faisant de lui un DWORD ou un FWORD ....

    Donc on sait pas trop en réalité. Mais son nom suggère du 8BYTES (justement pour nous informé sur le format utilisé), à moins que son utilisateur fasse exprêt le con.


    2 --------

    Un programme 16bit il commence par le Magic Word Dos c'est à dire pas les caractères MZ.

    Un programme 32bit commence aussi par l'ancien entête DOS donc MZ puis à MZ+quelques Bytes commence le nouvel entête Win32 qui est représenté par les lettres PE.

    Ca y est je me rappelles PE = MZ + 80h

    Entre les deux on trouve une chaîne de caractères du type
    "This program cannot be run in DOS mode" dans le Dos Stub qui est affichée si tu lances un programme 32Bit sous Dos.

    Elle sert seulement à dire sous Dos que ce programme demande + que du Dos et donc ne pourra pas fonctionner dans cet environnement.

    @+

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    339
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 339
    Par défaut
    OK merci pour ta réponse Morgatte.

    Mais je cherche toujours un petit prog en 32 bits sous TASM, je sais que je dois compiler avec le compilateur 32 bits de TASM mais il ne me reconnaît pas la ligne 'use32'

    Merci d'avance

  6. #6
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 65
    Par défaut

    push imm8

    ... on te dit implicitement que ce que tu empiles c'est du 8bytes.
    euh... imm8 c'est pas plutot pour "immediate 8 bits" ??

    du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    push 0xFF     ; empile un octet de valeur 0xFF


    golem
    +++

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 92
    Par défaut
    oui carrément, j'ai pas bien expliqué ?

  8. #8
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    339
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 339
    Par défaut
    Ne t'en fais pas Morgatte, on avait très bien compris (en tout cas, c'est mon cas). Tant que j'y suis, tu as l'air d'en savoir pas mal sur les en-têtes, y'a t'il une différence entre un programme compilé en mode réel et un programme compilé en mode protégé ? Parce qu'on met bien .386 et .386p par exemple, donc il doit y avoir quelque chose dans l'en-tête qui doit donner cette différence.

    Merci d'avance

  9. #9
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 65
    Par défaut
    euh... j'ai peur qu'il y ait confusion entre 8 bits et 8 bytes, c'est tout.

    parce que j'ai pas souvenir qu'un push imm64 existe (réellement 8 octets), mais faut vérifier car je n'ai pas la science infuse.

    golem
    +++

  10. #10
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    339
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 339
    Par défaut
    Dans mon cas, je tire ma liste des instructions de là (comme beaucoup de monde) :
    http://www.chez.com/pageasm/docs/indep/ins.htm

    Et "push imm8", veut bien dire qu'on met sur la pile une valeur de 8bits (1 octets) et non 8 bytes (8 octets)

    Par contre, j'ai fais une recherche très rapide sous google avec "push imm64" et j'ai rien trouvé. Je pense que c'est pas encore à l'ordre du jour car les procs 64bits ne sont pas encore sortis (sauf pour les grosses entreprises). Enfin, c'est que mon avis et moi non plus je n'ai pas la science infuse

  11. #11
    Nouveau candidat au Club
    Inscrit en
    Octobre 2002
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 2
    Par défaut
    pour le 64 bits pour ceux qui on les ordi a partir de sept.... 2002 il son equi....... du x86-64 d'amd a verifier selon les construteurs

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 92
    Par défaut
    Pour ce qui est du mode protégé, je sais pas trop en fait.
    Je programme toujours en assembleur .386 ou .486 tout simplement parce que j'ai jamais eu l'utilité du "p" et que je sais pas ce qu'il fait de plus ou moins.

    Mais si tu es intéressé, fais un petit prog (une messageBox par exemple) et compile une sans et une avec le "p".

    Puis prend ProcDump, il y a de grandes chance qu'il te révèle la différence entre les deux. Si tu vois rien trouves un comparateur Byte par Byte, il te donnera forcément ce qui diffère et ensuite si c'est dans le PE Header que quelque chose a été modifié, tu peux toujours avec un peu d'entrainement et la doc d'Iczelion voir à peu prêt de quoi il sagit.


    Mais bon je ne garantit pas du tout que ce soit au niveau du PE Header qu'il se passe quelque chose.

  13. #13
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Par défaut
    Dans toutes mes docs il n'est jamais question de quelque chose dans le genre dans les header des exe. Sous dos, si je me trompe pas c'est le programme lui même qui doit tester si le DPMI, le XMS est installé, et dans tous les cas de passer en pmode de sa propre initiative.

Discussions similaires

  1. Lire bit à bit une image JPEG
    Par moumoute15 dans le forum Images
    Réponses: 1
    Dernier message: 10/06/2006, 15h13
  2. bits,bytes,bit word ?
    Par Battosaiii dans le forum C
    Réponses: 2
    Dernier message: 17/03/2006, 11h29
  3. Comment lire un char bit a bit ?
    Par damien99 dans le forum C++
    Réponses: 9
    Dernier message: 02/02/2006, 21h57
  4. Lire bit par bit
    Par The_Undertaker dans le forum C++
    Réponses: 8
    Dernier message: 01/07/2005, 11h43
  5. Conversion de handles 16 bits <--> 32 bits
    Par Alcatîz dans le forum Windows
    Réponses: 6
    Dernier message: 13/12/2003, 13h40

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