Accueil > Forum > > > > manipuler des chaines en assembleur
manipuler des chaines en assembleur
dimanche 24 juillet 2005 à 15:05:11 |
manipuler des chaines en assembleur

sylvain16
|
Voilà, je débute en assembleur, j'ai lu pas mal de trucs sur le sujet, mais un truc n'est pas très clair: comment on lit et écrit des chaines de caractères, et comment on pourrait comparer 2 chaines de caractères? Si j'ai bien comprit on utilise DS:ESI pour la source et ES:EDI pour la destination.... mais quelles instructions faut-il utiliser? Si quelqu'un peut m'aider à éclaircir ce sujet çà serait sympa, merci.
|
|
lundi 25 juillet 2005 à 12:33:15 |
Re : manipuler des chaines en assembleur

patatalo
|
Réponse acceptée !
salut,
mov [esi],'a' mov [esi+1],'s' mov [esi+2],'m' mov [esi+3],'f' mov [esi+4],'r' mov [esi+5],0
mov [edi],'a' mov [edi+1],'s' mov [edi+2],'m' mov [edi+3],'f' mov [edi+4],'r' mov [edi+5],0
mov ecx,5 cld push esi push edi repe cmpsb pop edi pop esi je .chaineidem
l'instruction cmpsb incremente esi et edi et decremente ecx.
@++
|
|
lundi 25 juillet 2005 à 15:56:02 |
Re : manipuler des chaines en assembleur

ToutEnMasm
|
Réponse acceptée !
Salut, En instructions assembleur movsb(movsd ...) scasb cmpsb En api ,lstrlen lstrcpy.Pour les plus courantes. Avec masm szcatstr. ToutEnMasm
|
|
lundi 25 juillet 2005 à 18:04:55 |
Re : manipuler des chaines en assembleur

sylvain16
|
Merci pour les tuyaux, c'est vraiment sympa!
salut a+
|
|
mardi 26 juillet 2005 à 08:21:23 |
Re : manipuler des chaines en assembleur

Nasman
|
Une petite précision (ou alors je n'ai rien compris à l'assembleur),
c'est le préfixe repe (opcode F3) qui déclanche la décrémentation du
registre ecx. L'instruction cmpsb qui compare deux octets incrémente
esi et edi si le "direction flag" est à zéro (cld) et décrémente esi et
edi s'il est à 1 (std). De façon analogue cmpsw (cmpsd) compare deux
words (dwords) et incrémente/décrémente de 2 (4) les index.
|
|
vendredi 29 juillet 2005 à 19:07:15 |
Re : manipuler des chaines en assembleur

sylvain16
|
Nasman, tu a entièrement raison, mais je précise un peut plus:
J'ai relut la doc Intel et effectivement c'est bien REPE qui décrémente ECX. Pour aller plus loin je traduit ce qui est écrit:
REP/REPE/REPZ/REPNE/REPNZ- Repeat String Operation Prefix
Description
Répète une instruction de chaine le nombre de fois spécifié dans le registre comteur ou jusqu'à ce que la condition indiquée du flag ZF soit rencontrée. Les mnémoniques REP, REPNE, REPZ et REPNZ sont des préfixes qui peuvent être ajoutés à une des instructions de chaine. Le préfixe REP peut être ajouté aux instruction INS, OUTS, MOVS, LODS et STOS, et les préfixes REPE, REPNE, REPZ et REPNZ peuvent être ajoutés aux instructions CMPS et SCAS (REPZ et REPNZ sont synonymes de respectivement REPE et REPNE). La fonction du préfixe REP est indéfinie quand il n'est pas utilisé avec une instruction de chaine.
Les préfixes REP s'appliquent seulement à une instruction chaine à la fois. Pour répéter un block d'instruction, utilisez l'instruction LOOP ou une autre construction de boucle. Toutes ces préfixes de répétition impose à l'instruction associée à se répéter jusqu'à ce que le registre compteur (ECX) soit décrémenté à 0.
Préfixe Condition(s) de sortie
REP RCX ou (E)CX = 0
REPE/REPZ RCX ou (E)CX = 0 | ZF = 0
REPNE/REPNZ RCX ou (E)CX = 0 | ZF = 1
Les préfixes vérifient aussi l'état du flag ZF après chaque itération et termine la boucle si ce flag n'est pas dans l'état spécifié. Quand les 2 conditions testés se terminent, La cause de la fin de la répétition peut être déterminée soit en testant le registre compteur avec une instruction JECXZ ou en testant le flag ZF (avec un JZ, JNZ ou JNE).
Y'a encore une page entière sur ces préfixes, mais cela suffit pour comprendre leurs principes. Et dans la description des instructions de comparaisons:
CMPS/CMPSB/CMPSW/CMPSD/CMPSQ
Il est spécifié que "après la comparaison, les registres (E/R)SI et (E/R)DI sont incrémentés ou décrémentés automatiquement en accord avec le flag DF(Direction Flag), et de n octets en fonction de l'instruction".
Encore merci les gars.
|
|
Cette discussion est classée dans : chaines, assembleur, sujet, caractères, manipuler
Répondre à ce message
Sujets en rapport avec ce message
Probléme d'Affichage pour les chaines de caractères [ par HwW_Mb ]
Salut les petits :-)A L'AIDE !!!!!!!!!!!!!j'ai programmé un Mini Os avec un secteur de démarrage et un noyau de 5 secteursmais je n'arrive pas à affic
un programme pour programmer en assembleur [ par cricri_b34 ]
j'aimerais essayer de créer un petit programme en assembleur... mais je n'ai pas de programme pour le compiler :-/est ce que quelqu'un connaitrais un
dll a partir d'assembleur. [ par sgdaim ]
comment créer un fichier dll en utilisant l'assembleur du microcontroleur 8031.
au sujet de la compil [ par CCJ ]
bonjourj'aimerai savoir si il y a un moyen pour faire un prog sur un ordi coupé du monde autrement dit avec que le bloc not ou le dos et sans internet
Condition et enregistrement [ par ciberrique ]
Salut, voila je n'ai aucune connaissance en asm.Je voudrais effectuer une comparaison entre deux chaines de caracteres, une des chaines près configure
assembleur 8086: Affichage de table ASCII [ par redwings ]
je cherche le code source d'un prog en asm : comment on peut afficher toute la table des caractere + le code ascii en héxadecimal exemple : Resultat s
Compilateur Assembleur [ par Deimos_ ]
Bonjour à tous, Je commence à programmer l'assembleur et je voudrais savoir quel est le soft le plus adapté puor compiler mes programmes ! Je tourne s
besoin d'aide pour une conversion ascii/hexa en assembleur [ par MTHOMAS ]
Salut,Je voudrais faire une conversion Ascii vers hexa en assembleur (pic 16F630): le paramètre d'entrée (déposé dans w) est un nombre hexadecimal cod
Compilateur [ par LordBob ]
Bonjour a tous,voila je m'interresse un peu a la creation de langage... je ne sais pas grand chose, mais j'ai une question qui me trote dans la tete..
Sous-procedure externe en Assembleur ? [ par cbil ]
débutant en c/c++, flash et asm- Me contacterBonjour à tous,J'utilise TASM et j'aimerais faire une sous procedure externe.J'ai tester un exemple, (je
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|