begin process at 2012 05 25 12:14:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

c, c++ et asm

 > 

Probleme ds mon code ki peut m aider??


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme ds mon code ki peut m aider??

lundi 30 mai 2005 à 22:53:37 | Probleme ds mon code ki peut m aider??

Gillouille

voila l'objectif de ce programme c est de comparer deux fichiers de longueur differente et d'y trouver tt les éléments commun kelke soit leur position. avec pour longueur de chaine a rechercher fournie par l utilisateur.

je ne vous ca  che pas ke c est un projet scolaire, mais etant bloqué depuis une semaine, je me suis dis ke kelkun pourais m aider.
a votre bon coeur ^^

;***********************************;
;*                                                                   *;
;*    Assembleur    : TASM DSSDEMO         *;
;*            : TLINK DSSDEMO                      *;
;*                                                                   *;
;***********************************;

;-- Paramétrage du compilateur --------------------------------------------------;

    .MODEL SMALL            ;64ko pour les données et 64ko pour le prog   
    .STACK 256                    ;Réserver 256 octets pour la pile       
   
;-- Zone des données
    .DATA                             ;segment de donnée

    welc         DB     "Bienvenu dans ce programme de recherche de chaine dans deux fichiers :p",13,10,"$"
    Msg         DB     13,10,"Entrer un nombre pour quantifier la chaine a rechercher: ","$"
    MsgE       db    13,10,"Erreur lors de l'ouverture du fichier ","$"
    Msg3       db    13,10,"Les chaines qui coincide entre les deux fichiers sont :","$",13,10
    Msg4        db    13,10,"Et voila ki fini ce fichier merci et aurevoir","$"
    Handle1     DW    ?,"$"
    Handle2    DW    ?,"$"
    TAILLE1    DW    ?,"$"
    Ttmp1        DW    ?,"$"
    TAILLE2     DW    ?,"$"
    Ttmp2        DW    ?,"$"
    File1        DB    "c:\text1.txt",0,"$"
    File2        DB    "c:\text2.txt",0,"$"
    LGchain     DW    ?,"$"
   
    cpt1    DW    ?,"$"
    cpt2    DW    ?,"$"   
       
    BUFFER    DB    200 DUP("$")
    BUFFER2    DB    200 DUP("$")

   
;-- Codes de programmes ---------------------------------------------------------;

    .CODE

DEBUT:     MOV AX,@DATA
    MOV DS,AX

;***presentation   

    lea dx,welc
    mov ah,09h    ;pour afficher phrase de bienvenu
    int 21h
   
;***recuperation longueur chaine
   
    lea dx,Msg
    mov bh,09h    ;pour afficher Msg
    int 21h
       
    mov ah,01h
    int 21h
    sub al,30h       
    mov bx,10
    mul bx
            ;multiplie le chiffre encoder par dix et le met ds AX
    MOV LGchain,AX    ;additionne les dizaines a la valeur de la variable temporaire
   
   
    mov ah,01h
    int 21h
    sub al,30h
    MOV AH,0       
    add LGchain,AX    ;additionne les unités a la valeur de la variable temporaire
   
   
   
;***recupere le handle du premier fichier
   
    MOV AH,3DH    ;ouverture du fichier
    MOV AL,2    ;mode d'ouverture
    LEA DX,File1    ;emplacement
    INT 21H
   
    MOV Handle1,AX    ;sauvegarde du handle du fichier
   
   
;***taille du premier fichier
   
    XOR AX,AX    ;remise a 0 de AX
    MOV AH,42H    ;manipulation du pointeur du premier fichier
    MOV BX,Handle1   
    MOV DX,0
    MOV cx,0
    MOV AL,2    ;mode d'ouverture 2 pour se metre a la fin du fichier
    int 21h
   
    MOV TAILLE1,AX    ; recupere la taille du fichier de AX pour le sauvegarder ds Taille1
    MOV Ttmp1,AX    ;sert de seconde sauvegarde au cas ou
   


;***recupere le handle du second fichier


    MOV AH,3DH    ;ouverture du fichier
    MOV AL,2    ;mode d'ouverture
    LEA DX,File2    ;emplacement
    INT 21H
   
    MOV Handle2,AX    ;sauvegarde du handle du fichier

   
           
;***taille du second fichier

    MOV AH,42H    ;meme manip ke pour le premier fichier
    MOV BX,Handle2
    MOV DX,0
    MOV cx,0
    MOV AL,2
    int 21h
   
    MOV TAILLE2,AX
    MOV Ttmp2,AX   


   
;***mise en place

    MOV CX,LGchain
    SUB TAILLE1,CX        ;pour ne pas depacer la fin du fichier 1
    MOV CX,LGchain
    SUB TAILLE2,CX        ;pour ne pas depacer la taille du fichier 2
   
   
    lea dx,Msg3
    mov ah,09h        ;pour afficher la phrase ki annonce les bouts de chaine ki sont similaire entre les deux fichiers
    int 21h
   
    MOV CX,0
    MOV cpt2,CX
   
    jmp RECHARGE2        ;saute l instruction d'affichage de chaine identique


TEMP:
    JMP FIN            ;comme ma doucle est trop long ceci est un jump intermediaire



;***ma boucle de comparaison

AFFICHE:
    lea dx,BUFFER2
    mov ah,09h        ;pour afficher la phrase ki annonce les bouts de chaine ki sont similaire entre les deux fichiers
    int 21h
   

RECHARGE2:
    ;*** chargement du buffer 2 par rapport a la lg de la chaine souhaiter

    MOV CX,TAILLE2
    MOV BX,cpt2
    cmp BX,CX        ;sert pour sortire du prog et ne pas boucler a l infini
    JA  TEMP
       
    MOV AH,42H        ;charger le buffer
    MOV BX,Handle2
    MOV DX,0
    MOV cx,cpt2
    MOV AL,0
    int 21h
               
    MOV AH,3FH
    MOV BX,Handle2
    MOV CX,LGchain
    LEA DX,BUFFER2
    int 21h            ;fin charge buffer
   
    MOV CX,0
    MOV cpt1,CX        ;reinitialise le compteur 1
    INC cpt2        ;incremente le compteur du second fichier

RECHARGE1:
    ;***chargement du premier buffer   
    MOV CX,TAILLE1
    MOV BX,cpt1
    cmp BX,CX        ;sert pour sortire du prog et ne pas boucler a l infini
    JA  RECHARGE2       
   
    MOV AH,42H        ;charger le buffer
    MOV BX,Handle1
    MOV DX,0
    MOV cx,cpt1
    MOV AL,0
    int 21h
               
    MOV AH,3FH
    MOV BX,Handle1
    MOV CX,LGchain
    LEA DX,BUFFER
    int 21h            ;fin charge buffer
           
    xor bx,bx        ;bx=0
    mov bX,LGchain        ;copie le nombre de caractère a lire dans BX
    mov BUFFER2+[bx],'$'    ;ajout du caractère '$' à la fin de la chaîne
    xor bx,bx        ;bx=0
    mov bX,LGchain        ;copie le nombre de caractère a lire dans BX
    MOV BUFFER+[bx],'$'
   
    INC cpt1        ;incremente le compteur du premier fichier
   
    cld            ;direction flag=0 (DI et SI s'incrémente)
    xor ch,ch        ;ch=0
    mov CX,LGchain
    lea si,BUFFER2        ;SI contient l'adresse du premier offset de la chaine du second fichier
    lea di,BUFFER        ;DI contient l'adresse du premier offset de la chaine du premier fichier
    REP CMPSB        ;comparaison des 2 chaines
   
    JNE RECHARGE1        ;pour avancer ds le premier fichier
    JMP AFFICHE   

   
;***fin du programme
       
FIN:
    lea dx,Msg4
    mov ah,09h
    int 21h

    MOV AH,3EH
    LEA BX,Handle1
    int 21h
   
    MOV AH,3EH
    LEA BX,HANDLE2
    int 21h

    MOV AX,4C00H     ;Termine le programme
    INT 21H

;--- Fin -------------------------------------------------------------------------;

End debut




Cette discussion est classée dans : fichier, int, mov, cx, bx


Répondre à ce message

Sujets en rapport avec ce message

petit probleme de debutant [ par freekc ] j'essaie de faire un ptit prog que lorsque l'on rentre son nom prenom etc . Il y est un recapitulatif qui se mette en dessous ms lorsque que le recapi pb d'affichage :s [ par rana ] bjrje voudrais savoir, comment faire pour afficher une chaine de caractère en faisant une boucle (en utilisant repne scasb) jusqu a arrive a une lett [nasm] cryptage [ par sirozz ] Salut à tous !J'ai fait un petit prog qui crypte (xor) un fichier passé en ligne de commande, mais j'ai fait ça avec le guide des interruptions sous l Affichage [ par AMENO ] Cher amis aidez moi, c'est une partie de mon examen de noel. et je suis bloquerenfin il 'sagit d'un programme que l'on doit entrer jsuqu a 32 caracter boot system [ par henri12 ] salut je viens de trouver ce code qui permer de lancer un fichier sur une disquettr a: exemple systemje voudrais qu il me lance le jeu pong sur a:  j Lecture de DTA [ par mouadestla ] Bonsoir , je débute en assembleur , j'esseye de coder en 16 bits un petit programme qui fait appele à l'interuptions 21h : 4Eh du DOS qui cherche un f Mon fichier Mp3 [ par li2k ] Salut!J'aimerai créer en assembleur un programme qui lance la lecture d'un fichier mp3 (Juste pour faire mon réveil personnalisé  sur ordi)Mais bon le Affichage décroissant et alphabétique de 2 listes(Nom_Prénom et Note) [ par m_didi9 ] [code=autre]Data SEGMENT Mess1 DB 10,13, 'Entrez la liste des Noms :' DB 10, 13, '$' Mess2 DB 'Entrez la liste des Notes :' DB 10, 13, '$' Mess3 un code en assembleur [ par tatouna ] salut à tous, je suis débutante en asm donc j'ai un problème et je souhaite que vous m'aidiez j'ai une chaine de caractère (une date) et je veut la p ERREUR DE SEGMENTATION en asm [ par tahsgh ] salam; jai le code suivant ----------------------------------------- global main SECTION . text main :


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,997 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales