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 :

[Warning] Macro dans .lib séparé


Sujet :

x86 16-bits Assembleur

  1. #1
    Membre actif Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Points : 253
    Points
    253
    Par défaut [Warning] Macro dans .lib séparé
    Salut,
    je viens de faire un petit programme tout bete d'apprentissage qui attend la saisie d'une chaine puis l'affiche inversée
    le voici (les critiques sont les bienvenues) :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    .386
     
    code segment use16
     
    assume cs:code, ds:data, ss:pile
     
    debut :
    	if1
    		include ma_lib.lib	;fichier externe contenant macro...
    	endif
     
    	mov ax,data		;initialisation segment de données
    	mov ds,ax
     
    	mov ah,0ch
    	mov al,0ah
    	mov dx,offset chaine	;attente saisie chaine -> chaine
    	int 21h
     
    	saut_retour		; macro effectuant un retour a la ligne et chariot
     
    	xor cx,cx
    	mov cl,[chaine+1]	;on place dans cx la taille de la chaine
     
    	inverse :
    		mov si,cx
    		mov dl,chaine[si+1]	;on affiche chaine caractere par caractere
    		mov ah,02h			;mais en partant de la fin
    		int 21h
    	loop inverse
     
    	mov ah,4ch			;fin du programme
    	int 21h
     
    code ends
     
    data segment use16
     
    	chaine db 20, 20 DUP('$')	;variable pour la chaine saisie
     
    data ends
     
    pile segment stack use16
     
    	remplissage db 256 DUP(?)
     
    pile ends
     
    end debut
    le code est compilé avec Tasm et linké avec Tlink, le probleme c'est qu'il sort un warning à la compilation :
    *Warning* inverse.asm<49> Module is pass dependent - compatibility pass was done
    je suppose que le module dont parle le compilateur est ma_lib.lib, que voici :
    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
     
    .386
     
    ;----------------------------------Définition(s) Macro(s)
     
    		saut_retour macro  ;macro effectuant un saut de ligne et un retour chariot
    			local text
     
    			push ax dx  ;sauvegarde de ax et dx
    			mov ah,02h
    			mov dl,10   ;ecriture du saut de ligne
    			int 21h
    			mov dl,13   ; ecriture du retour chariot
    			int 21h
     
    			pop dx ax  ;restauration de ax et dx
     
    		endm saut_retour
    	;---------------------------------------------------------------
    J'aimerais bien comprendre pourquoi j'ai ce warning
    Merci pour votre aide
    A+
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

  2. #2
    Responsable Pascal, Lazarus et Assembleur


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

    Il faudrait voir exactement la ligne de commande qui lance l'assemblage.
    Ce warning survient théoriquement lorsque le paramètre /M de la ligne de commande impose un nombre de passages maximal à l'assemblage insuffisant pour générer un code optimisé.
    Si le /M est omis, le nombre de passages maximal est de 5.
    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 actif Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Points : 253
    Points
    253
    Par défaut
    Salut, j'assemble puis link avec ce .bat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @ECHO OFF
    TASM /m9 %1.asm
    IF NOT EXIST %1.asm GOTO FIN
    TLINK %1.obj
    ERASE %1.map
    ERASE %1.obj
    :FIN
    Merci pour ton aide
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

  4. #4
    Membre actif Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Points : 253
    Points
    253
    Par défaut
    J'ai lu sur un site qu'il fallait mettre le include ... dans le segment de données, j'ai donc maintenant ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    data segment use16
     
    	include ma_lib.lib	;fichier externe contenant macro...
    	chaine db 20, 20 DUP('$')	;variable pour la chaine saisie
     
    data ends
    Mais quand je compile en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    @ECHO OFF
    TASM /m9 %1.asm
    IF NOT EXIST %1.asm GOTO FIN
    TLINK %1.obj
    ERASE %1.map
    ERASE %1.obj
    :FIN
    J'ai maintenant 1 erreur et 1 warning :
    Error : Forward reference needs override
    Warning : Module is pass dependent - compatibility pass was done
    Etrange
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

Discussions similaires

  1. macro dans Excel
    Par mavean dans le forum Access
    Réponses: 5
    Dernier message: 08/04/2006, 11h21
  2. Macro dans un .h
    Par vinzzzz dans le forum C
    Réponses: 8
    Dernier message: 24/02/2006, 18h06
  3. Réponses: 9
    Dernier message: 25/01/2006, 15h35
  4. Accèder à un fichier contenu dans LIB ?
    Par elitost dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 21/10/2005, 22h43
  5. Macro dans excel permettant de voir si un fichier est ouvert
    Par VirginieGE dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/08/2004, 07h51

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