Voila fait.
Gaffe que ça écrit les 260 octets de CurDir comme voulu dans ton code. Pas grave à la relecture puisqu'il y a le 0 final parmi les 260 octets.
Quel intérêt de le mettre en ASM ?
Soit c'est une petite fonction indépendante et il n'y a rien à gagner par rapport au compilo, soit ça fait partie d'un bloc de code et auquel cas il faut tout mettre en ASM.
C'est pas pour gagner en vitesse, c'est juste pour faire une petite experience, il me faudrait juste la declaration des variables et l'apelle au fonction avec push et call, mais je ne sait pas comment declarer les variables, et je crois qu'il faut passer les parametre a l'envers?
Ce petit bout de code est censé ecrire son path dans C:\lcfg.bak
mais il plante des la premiere instruction: "la memoire ne peut etre written"
mov dword ptr[eax], 006B6162h
pk?
On ne peut pas ecrire directement dans les registres?
Quand on fait char Test[32] ca n'alloue pas de memoire, ca ecrit directement dans la memoire cache du processeur non?
Sinon comment je peux faire pour obtenir un poiteur sur une zone de memoire libre?
"Quand on fait char Test[32] ca n'alloue pas de mémoire, ca ecrit directement dans la memoire cache du processeur non?"
Non. Un tableau fait reculer esp pour avoir sa mémoire sur le stack.
lea edx, [esp - 264]
[esp - 264] est ton tableau char CurDir[260];
edx est son "pointeur".
mov byte ptr[edx], 0x66 équivaut à faire (CurDir[0] = 0x66 ou *pointeur = 0x66)
Ouvre un livre d'assembler avant de continuer plus loin. Il serait important de maitriser les concepts de registre et stack (entre autres) avant toute chose.