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 :

Quelques difficultés : programme console, affichage de message, debugging


Sujet :

x86 16-bits Assembleur

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 159
    Points : 80
    Points
    80
    Par défaut Quelques difficultés : programme console, affichage de message, debugging
    Bonjour à tous
    j'ai quelques difficultés en assembleur et je viens chercher solution.
    1.-comment faire un programme pour qu'il se compile avec l'écran DOS comme le PASCAL ou le C?
    2-quelles sont les instructions pour demander un texte et afficher un message à l'écran?( comme en pascal on a readln et en C le printf)
    3- cette dernière question concerne immunity debugger.j'arrive à faire le debugging mais le problème est que je n'arrive pas à recreer l'executable avec les mise à jour. comment le fait on?
    merci pour vos reponses
    Celui qui est juste dans les petites choses l'est dans les grandes

  2. #2
    Noteworthy
    Invité(e)
    Par défaut
    Salut,
    Bonjour à tous
    j'ai quelques difficultés en assembleur et je viens chercher solution.
    1.-comment faire un programme pour qu'il se compile avec l'écran DOS comme le PASCAL ou le C?
    2-quelles sont les instructions pour demander un texte et afficher un message à l'écran?( comme en pascal on a readln et en C le printf)
    Sous MS-DOS, il existe deux sortes de programmes exécutables: Les .COM et les .EXE

    Rappelons quelques bases sur les fichiers .COM :
    • La taille d'un fichier .COM est limitée à 64Ko à savoir 65536 octets avec la PSP (Program Segment Prefix),
    • Les registres de segments ont tous la même valeur au démarrage : (CS = DS = SS = ES),
    • Le code, la pile et les données se partagent donc les mêmes segments.
    • Un fichier .COM se charge toujours à l'offset 100h, juste après la PSP,
    • Le fichier .COM est chargé tel quel dans la mémoire, après la PSP,
    • La mémoire ne s'adresse pas de facon 'linéaire' !.
    .
    Exemple d'un fichier .COM :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    .model tiny
    .data
          msg   db "Hello World!",13,10,"$" 
     
    .code
    	.startup
    	mov   dx,offset msg 
    	mov   ah,9			
    	int   21h			
     
    	mov   ah,0			
    	int   16h
     
            mov ax, 4C00h 
            int 21h 
     
    	.exit
     
    end
    Le programme ci-dessus ne fait rien d'autre qu'afficher un 'Hello World!" à l'écran en appelant la fonction MS-DOS : 9h de l'interruption 21h, attendre que l'utilisateur tappe n'importe quel boutton puis terminer le programme en appelant la fonction particulière 4C00h (Exit).

    Deuxième exemple, les fichiers .EXE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    .MODEL	small
    .stack	100h
     
    .data 
    	msg		db "Hello, World!",13,10,"$"
     
    .code
    start:
    	mov		ax,@data		
    	mov		ds,ax			
     
    	mov		dx,offset msg	
    	mov		ah,9			
    	int		21h				
     
    	mov		ax,0C07h		
    	int		21h				
     
    	mov		ax, 4C00h		
    	int		21h				
    end start
    Le programme suivant est un programme EXE qui fait exactement la même chose que l’exemple précédent.

    Compilation :
    Copiez le code puis collez le dans un nouveau document au format texte avec l'extension ".asm". Nommez ce fichier par exemple : "Hello.asm" et enregistrez le dans le répertoire "C:\Exemple". Puis en ligne de commandes tapez : C:\masm32\bin\ml /c c:\Exemple\Hello.asm

    La compilation aura généré le fichier "Hello.obj" que vous copierez dans le répertoire "C:\Exemple". Ensuite, utilisez le linker de la façon suivante :

    • C:\masm32\bin\link16 /tiny c:\Exemple\Hello.obj (Pour générer des fichiers .COM)
    • C:\masm32\bin\link16 c:\Exemple\Hello.obj( Pour générer des fichiers .EXE)

    Les fichiers "Hello.obj" et "Hello.exe" sont générés dans le répertoire courant. Copiez les dans le répertoire "C:\Exemple" si il n'est pas le répertoire courant.

    Pour automatiser ces étapes, tu fait appel à un fichier batch sinon, un IDE tels que WinASM (http://www.winasm.net/) ou RadASM (http://www.oby.ro/rad_asm/) ...

    Quel Assembleur je dois choisir ?
    Juste à titre d'exemple, j'ai utilisé dans ces exemples l'assembleur MASM (Microsoft Assembler). Comme bon nombre de questions posées dans la vie, il n'y a pas de réponse simple à la question « Quel est le meilleur assembleur ? » La raison en est que différentes personnes ont des critères différents pour évaluer ce qui est « le meilleur ». A l'absence d'une échelle universelle pour juger les différents assembleurs, il n'y a aucun moyen de choisir un seul assembleur et le désigner le meilleur. Alors je te conseille de lire le débat suivant: Quel compilateur choisir pour l'assembleur et tu choisis ce qui répends à tes besoins ..

    3- cette dernière question concerne immunity debugger.j'arrive à faire le debugging mais le problème est que je n'arrive pas à recreer l'executable avec les mise à jour. comment le fait on?
    merci pour vos reponses
    Après avoir effectuer les changements, cliques sur le bouton droit, Copy to executable, All modifications, Copy All. Un fois encore, le bouton droit, Save file, et voilà.

    Noteworthy.

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 159
    Points : 80
    Points
    80
    Par défaut
    merci NOTEWORTHY pour toutes tes reponses.
    je vais mettre celà en pratique et je rendrais compte.
    en passant j'ai lu ton cours sur le SSD et c'est génial
    Celui qui est juste dans les petites choses l'est dans les grandes

Discussions similaires

  1. Réponses: 21
    Dernier message: 18/12/2009, 12h56
  2. Affichage les messages debug
    Par Esil2008 dans le forum Logging
    Réponses: 1
    Dernier message: 04/07/2009, 09h15
  3. Quelques difficultés en programmation java
    Par dot-_-net dans le forum Débuter avec Java
    Réponses: 11
    Dernier message: 04/11/2008, 14h34
  4. [Debutant] execution d'un programme console
    Par benahpets dans le forum MFC
    Réponses: 8
    Dernier message: 19/05/2005, 00h19
  5. [API] Codage d'un moniteur de messages debug
    Par Pierre Castelain dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 15/01/2004, 19h47

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