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 :

Problème d'affichage de chaîne


Sujet :

Assembleur

  1. #1
    Membre habitué Avatar de duplo
    Inscrit en
    Octobre 2004
    Messages
    294
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Octobre 2004
    Messages : 294
    Points : 172
    Points
    172
    Par défaut Problème d'affichage de chaîne
    Bonjour
    je suis en train de faire un petit program qui cript un fichier ( bon OK il est bidon mai c'est pour apprendre !! je debute !!)
    et il met le criptage a la suite du fichier a cripter
    bon le probleme c'est que une foie que je le lance il me sort tout un ta de caracteres special et tout enfin sa ne marche po quoi!!!
    alor je compte sur vou pour me dire ou sa beug
    voici le script :

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    code segment use16
    assume cs:code, ds:code, ss:code
    org 100h
     
    debut:
     
    ;corp du program
     
    mov ah, 3dh
    mov dx, offset chem
    mov al, 2
    int 21h
     
    mov bx, ax
     
    mov ah, 3fh
    mov cx, 10000
    mov dx, offset ress
    int 21h
     
    jc ereu
     
    mov ah, 3eh
    int 21h
     
    jc ere
     
    mov cx, ax
    xor di, di
     
    cript:
    not byte ptr ds:[ress + di]
    inc di
    loop cript
     
     
    mov ah, 40h
    mov cx, 10000
    mov dx, offset ress
    int 21h
     
    jc e
     
    mov ah, 3eh
    int 21h
     
    mov ah, 09h
    mov dx, offset messfin
    int 21h
     
    ret
     
    ereu :
    mov ah, 09h
    mov dx, offset messe
    int 21h
    ret
    ere :
    mov ah, 09h
    mov dx, offset mess
    int 21h
    ret
    er :
    mov ah, 09h
    mov dx, offset mes
    int 21h
    ret
    e :
    mov ah, 09h
    mov dx, offset me
    int 21h
    ret
     
     
    ;fin du corp du program
     
    ;-----------donées---------------
     
    chem db "az.txt", '$'
    ress db 10009 dup(?)
    messe db 10, 13, "ereur le program va etre arreter ! 1", 10, 13, '$'
    mess db 10, 13, "ereur le program va etre arreter ! 2", 10, 13, '$'
    mes db 10, 13, "ereur le program va etre arreter ! 3", 10, 13, '$'
    me db 10, 13, "ereur le program va etre arreter ! 4", 10, 13, '$'
    chemar db "az", '$'
    messfin db 10, 13, "le fichier a bien ete cripter!!!", 10, 13, '$'
     
    code ends
    end debut
    voila
    baaaaa alor merci d'avance pour une eventuelle reponce
    +

  2. #2
    Responsable Pascal, Lazarus et Assembleur


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

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

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

    Dans les paramètres de la fonction 3Dh de l'interruption 21h, le nom du fichier est une chaîne ASCIIZ, c'est-à-dire une chaîne terminée par 00h (http://lrs.fmi.uni-passau.de/support...57/RB-2711.HTM). Or, dans tes données, tu termines ta chaîne par '$'.

    A mon avis, à la sortie de l'interruption, AX contient non pas le handle du fichier mais bien un code d'erreur ! Tu devrais tester la valeur du flag carry avant de continuer le traitement.

  3. #3
    Membre habitué Avatar de duplo
    Inscrit en
    Octobre 2004
    Messages
    294
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Octobre 2004
    Messages : 294
    Points : 172
    Points
    172
    Par défaut
    merci beaucoup

  4. #4
    Membre actif

    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
    Points : 279
    Points
    279
    Par défaut
    euh, j'me posais une question comme ça (ça fait longtemps que j'ai pas fait de .com) mais faudrait pas initialiser le registre DS par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    debut :
    mov ax,cs
    mov ds,ax

  5. #5
    Membre habitué Avatar de duplo
    Inscrit en
    Octobre 2004
    Messages
    294
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Octobre 2004
    Messages : 294
    Points : 172
    Points
    172
    Par défaut
    ba je ne vois po pourquoi nan
    en fin c'est surtout que je ne le fait jammais et que mes prog marche quen même

    ten que j'y suis ( desoler pour les web mester mai c'est pour ne po reouvrir un otre sujet )
    comment fait ton pour ajouter un 0 a la fin d'une chaine contenue dans un buffer?????
    esce que lon fait comme suit???? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mov byte ptr [buffer + 1], 0
    merci
    +


    Modération par Wormful_sickfoot :
    - Message en double supprimé
    Merci de lire les règles du forum.

  6. #6
    Membre actif

    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
    Points : 279
    Points
    279
    Par défaut
    je suppose que ça marche parce que le segment de code est identique au segment de données....

    sinon, ta solution pour mettre 0 à la fin d'un buffer est bonne mais attention à bien prévoir la taille du buffer, si ton buffer fait 255 octets en taille que ton pointeur_buffer est sur 255 (donc que ton buffer est rempli), l'adresse [pointeur_buffer+1] va se mettre normalement à la suite et donc dans la variable qui suit. En gros, si on considère ton programme ci-dessus, que le buffer soit ta variable ress, il faut faire attention si ton pointeur_ress=10009,dans ce cas ta variable messe commençera par 0 puis 13 puis normalement !!!

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

Discussions similaires

  1. Problème affichage sous-chaîne extrait d'une chaîne
    Par xymagic dans le forum Débuter
    Réponses: 15
    Dernier message: 25/10/2011, 18h26
  2. Problème d'affichage d'une chaîne de caractères
    Par bob32 dans le forum Assembleur
    Réponses: 13
    Dernier message: 23/06/2008, 23h06
  3. Réponses: 10
    Dernier message: 19/09/2006, 11h44
  4. [SQL] Problème d'affichage de caractère spéciaux dans une variable chaîne
    Par Kryptonaute dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 18/08/2006, 09h40
  5. Problème d'affichage d'une chaîne à l'écran
    Par Bubonik software dans le forum C
    Réponses: 7
    Dernier message: 08/05/2004, 21h47

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