begin process at 2010 02 09 23:29:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

Newbii

 > 

Copier chaine


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

Copier chaine

jeudi 26 août 2004 à 16:22:19 | Copier chaine

DeAtHCrAsH

Lu,

Je débute en ASM et je cherche des exemples et des cours un peu partout.
Pour l'instant j'essaye d'apprendre a maitriser l'uitlité des registres mais aussi les variable.
En C, les types de variables sont tels que char [], char *, int, double, float.
Quel sont les équivalents en ASM ?

Aussi, est ce que quelqu'un pourrait me faire un exemple de fonction qui prend en parametre 2 chaines et qui copie la 1ere dans la deuxieme.

Merci par avance. Toute aide sera la bienvenue.

Shell
jeudi 26 août 2004 à 17:44:27 | Re : Copier chaine

AlexMAN

Membre Club
Coucou,


char coucou[12]; >> coucou db 12 dup(0);
char *coucou; >> coucou dd 0; pointeurs 4 octets donc un double mot
int coucou; >> coucou dd 0; int 4 octets donc un double mot
double coucou; >> coucou dq 0.0;double 8 octets donc un qword.

APres pour la fonction, j'etais en train de ten faire une, mais pas sur du tt kel fonctionne, donc je prefere te dire que Brunews en a codé une, tu peux la trouver sur cppfrance, c'est bnstrcpy.

Voila, en esperant avoir pu t'aider..

++

jeudi 26 août 2004 à 23:01:25 | Re : Copier chaine

DeAtHCrAsH

Yep j'ai regardé ce que tu m'as dis.
j'ai essayé un truc du genre mais ca marche pas, j'ai une erreur a la compilation :
[/Code]...
.data
Msg db 50 dup (0)
Txt db 50 dup (0)

.code
start:

mov Msg[0], Txt[0]
...[/Code]

Et j'ai l'erreur suivante :

"D:\ASM\PrintString\Main.asm(17) : error A2070: invalid instruction operands

Comment faire pour copier le 1er élément d'un tableau dans un autre tableau de meme type et de meme taille ?

Shell
jeudi 26 août 2004 à 23:09:25 | Re : Copier chaine

AlexMAN

Membre Club
Il faut passer par un registre intermediaire :

mov dl, [ecx]
mov [eax], dl

ca devrait passer, mais t'as regardé la source de Brubru ?
jeudi 26 août 2004 à 23:40:33 | Re : Copier chaine

DeAtHCrAsH

Oui je l'ai regardé mais j'y ai rien compris ou du moins pas grand chose.
En fait pour fixer les connaissances de base sur les registres, dans quel cas utilise t'on EAX, EBX, ECX, EDX, ESI, et EDI?
Et surtout comment les utilise t'on ?

Pourquoi préféré EAX a EBX ou autre ?

J'ai plein de ptite question comme ca qui me trote dans la tete.

Shell
jeudi 26 août 2004 à 23:52:11 | Re : Copier chaine

AlexMAN

Membre Club
jV repondre en parti paske mes connaissances sont bien maigres en asm...

Je pense qu'utiliser eax, ecx, et edx est du au fait qu'on a pas besoin de les restaurer apres utilisation, contrairement a EDI, ESI et EBX oci ! Enfin, jmexprime ptet mal, atta ke Brubru passe par la, il t'explikera bocou mieux ke je le ferai. Par contre, si tu as des pb avec sa fonction, demande moi, j'ai passé du temps a la comprendre moi oci, et ji suis arrivé dc n'hésite pas...

++
vendredi 27 août 2004 à 00:04:55 | Re : Copier chaine

DeAtHCrAsH

Yep je vais attendre BruNews pour quelques explications sur l'utilisation des registres.

Par contre je viens de lire et relire la fonction de BruNews et je pense avoir compris pas mal de chose, sauf peut etre une!

Pourquoi réitère t'il 3 fois les changements de registres en les comparants ?
Une seule fois n'aurait elle pas suffit en bouclant dessus jusqu'a arriver a la fin de la chaine ?

Et quand il utilise dec, il decremente le pointeur, mais dans ce cas comemnt fait il pour aller au bout de la chaine en decrementant ?

Shell
vendredi 27 août 2004 à 00:17:44 | Re : Copier chaine

AlexMAN

Membre Club
Uè moi oci ca ma semblé bizar, mais en fait, c paskil a deroulé la boucle, au lieu de faire 3sauts, il nen fera k1, c une technik d'optimisation made in brubru.
Et pour ce ki est de l'utilisation de dec, je crois (si jme souviens bien) kil ne fait ca kune seule fois, au debut, c pour ka la fin, il renvoie une valeur pointant sur le zero final de la chaine.
Voila, en esperant t'avoir aidé

++
vendredi 27 août 2004 à 00:28:17 | Re : Copier chaine

DeAtHCrAsH

Oki,
C'est deja beaucoup plus clair.
J'essaye donc de copier le premier caractere d'un db dans un dd, je compile je n'ai aucune erreur mais le prog plante!
Ou est l'erreur ???
.data
txt dd 12 dup (0)
msg db "Salut!",0
.code
start:
mov eax, txt
mov ecx, offset msg
mov dl, [ecx]
mov [eax], dl
add eax,0

invoke MessageBox, NULL, addr txt, addr msg, MB_OK
invoke ExitProcess,0
end start


Shell
vendredi 27 août 2004 à 00:31:59 | Re : Copier chaine

AlexMAN

Membre Club
mov eax, offset txt

ca passe nan ?

Et pkoi ce add eax, 0 ??? ne sert a rien, et puis si jpeu te donner un conseil, ki n'est kune kestion de gout, enleve ces invoke, ki ne font ke denaturer le vrai assembleur ... Mais fais comme tu veux !

++

1 2 3 4 5 6 7

Cette discussion est classée dans : chaine, char, aussi, asm, copier


Répondre à ce message

Sujets en rapport avec ce message

Equivalent ASM de chaine[0] = 0 [ par AlexMAN ] Bonjour, C'est simplement une ptite incertitude : pour l'ekivalent de chaine[0] = 0 en C: mov [chaine], 0 ou mov chaine, 0Ou bien c totatelment la mm strrev [ par vecchio56 ] Je regarde le fichier strrev.asm qui est utilisé au moins pour les debogages et je remarque que c'est une traduction d'un algorithme écrit en C qui es Fonction standard et asm inline [ par AlexMAN ] Bonsoir, Voila, j'ai essayé a plusieurs reprises d'appeler une fonction une fonction standard tel que strcpy, strcmp, memset (n'est pas standard mais [NASM] émulateur NES [ par sirozz ] Bonjour à tous,Je me lance dans la programmation d'un émulateur de console NES en ASM avec NASM. J'avais déja fait un émulateur NES en VB il y a quelq pb j'conprend pas [ par mat74 ] voila je viens de faire un prog ( avec tasm ) qui lis les attributs d'1 fichier et qui les affiches . le pb c'est que la valeur renvoyer par l'interru Question ASM [ par LordBob ] Bonjours a tous,voila en fait j'aimerais me lancer dans la programmation en assembleur, je viens donc d'acheter un petit bouquin qui traite du sujet e Cherche doc instructions asm x86... [ par akboy7015 ] Bonjour a tous...J'ai beau eu cherché sur ce site dans le forum, je ne trouve aucun lien vers une bonne doc assembleur x86 faisant la liste de toutes Exemples [ par DeAtHCrAsH ] Lu,Je débute en ASM et pour ce faire je cherche des exercices a faire en ASM, de niveau croissant.Merci par avance.Shell pic16f84 serin [ par h82kev ] bjr à tousvoilà mon problèmej'utilise un pic16f84 pour un banc de test pour modemlorsque j'appui sur un bouton poussoir (pin 7), je veux envoyer un ca PGCD.ASM [ par KENZO75 ] bonsoir à tous, j'ai un programme à faire, il doit calculé le pgcd de deux nombres entre 0 et 99...Mais je sais pas comment faire lire les deux nombre


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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 : 0,624 sec (4)

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