Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1459 connectés 

  FORUM HardWare.fr
  Programmation
  ASM

  prob avec chaine de caractere

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

prob avec chaine de caractere

n°2035702
marooh
Posté le 12-11-2010 à 17:05:08  profilanswer
 

bonjour, je veux ecrire un code pour trouver le mot le plus long dans une chaine et l'afficher.j'ai essayé d'ecrire mais mon code ne fonctionne pas si vous voulez bien me corriger
mov t_max,0
mov cx,n
mov si,0
mov p,0
calcul_longueur_mot:
test_si_separateur:
cmp chaine[si],' '
je oui_separateur
cmp chaine[si],';'
je oui_separateur
cmp chaine[si],','
je oui_separateur
cmp chaine[si],'.'
je oui_separateur
cmp chaine[si],':'
je oui_separateur
cmp chaine[si],'-'
je oui_separateur
jne non_separateur
 
oui_separateur:
mov bx,p
cmp bx,t_max
ja stockage
jbe re_initialisation
stockage:
mov bx,p
mov t_max,ax
mov indice_mot,si
mov p,0
mov ah,9
mov dx,offset msg6
int 21h                    
sub indice_mot,t_max
mov cx,t_max
mov ah,2
mov si,indice_mot
le_mot_plus_long:
mov dl,chaine[si]
int 21h
inc si
loop le_mot_plus_long
jmp incrementation
re_initialisation:
mov p,0
incrementation:
inc si
loop calcul_longueur_mot

mood
Publicité
Posté le 12-11-2010 à 17:05:08  profilanswer
 

n°2036060
marooh
Posté le 15-11-2010 à 15:31:00  profilanswer
 

j'ai changé complétement de code,je n'ai pas su comment faire pour afficher le mot le plus long .svp aidez moi
mov indice_mot,0 \\indice du mot le plus long
mov bx,chaine[si] \\l'indice du mot courant
mov t_max,0    \\ longueur du mot le plus long  
mov cx,0     \\ la longueur du mot courant
mov si,offset chaine
scrute:
cmp byte ptr[ds:si],35  \\comparaison avec # qui marque la fin de la chaine
jz findescrutation
cmp byte ptr[ds:si],20h \\comp avec les espaces
je separateur
inc si  
inc cx
separateur:
cmp t_max,cx
jge stockage
stockage:
mov t_max,cx \\ stckage de la nouvelle longueur
mov indice_mot,bx \\stockage du nouveau indice
mov bx,chaine[si+2]
mov cx,0
jmp scrute
findescrutation: \\traitement du dernier mot et affichage
mov bx,chaine[si+2]  
cmp t_max,cx
jge stock
mov ah,9
mov dx,offset msg3
int 21h
mov cx,t_max
mov ah,2
int 21h
mov ah,9
mov dx,offset msg6
int 21h
mov  dx,bx
mov ah,2
int 21h

n°2036165
h3bus
Troll Inside
Posté le 16-11-2010 à 00:55:13  profilanswer
 

De mémoire une fin de chaine pour l'interruption 21h est un $
 
De plus tu n'utilise jamais a fonction 9 sur ta variable indice_mot, c'est normal?
Je ne comprend pas le mov bx,chaine[si+2], inc bx serait plus approprié non?
 
Sinon pour aller plus loin, t'as essayer en pas à pas au débogueur? Que te sors ton programme?


---------------
sheep++
n°2036330
marooh
Posté le 16-11-2010 à 14:38:01  profilanswer
 

Re,
la chaine est saisie au debut par l'utilisateur,je veux la parcourir et elle se termine par#.
Mov bx,chaine[si+2]: en fait j'avais l'intention de choisir bx comme etant le registre qui donne l'indice du mot courant mais je n'ai pas su vraiment comment faire


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  ASM

  prob avec chaine de caractere

 

Sujets relatifs
Chaine de lettre aléatoireStructure en c sur un tableau de chaine de caractere
extraire un chiffre d une chaine de caractere [résolu]prob avec scanf
Comment remplacer un caractère dans une très longue listeConcatenation de chaine texte
Calculette qui prend et retourne une chaîne de caractères[résolu] Nettoyage de chaine par Regex
prob: getimagesize() et chaîne de caractère 
Plus de sujets relatifs à : prob avec chaine de caractere


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR