J'essaie d'imprimer la valeur d'un compteur qui s'incrémente dans une boucle while, c'est juste une partie d'une plus grande fonction sur laquelle je travaille un projet, voici comment j'augmente la valeur de la variable de compteur et essaye de l'imprimer, à cause de la façon dont j'appelle la fonction printf je crois que je dois pousser les variables char [] avec ce que je veux imprimer sur le pile, j'ai essayé de pousser les valeurs du compteur directement à imprimer (en utilisant "push edx" directement au lieu de stocker l'adresse d'une variable char [] et en le poussant) et il recrache simplement des nombres aléatoires probablement l'adresse mémoire de la valeur ou quelque chose, la façon dont l'appel de fonction d'impression est configuré fonctionne correctement lorsque j'imprime les variables char [] pour lesquelles j'ai déjà spécifié le contenu lorsque je les déclare avant la balise _asm (par exemple "char text [4] ="% s \ n ""), j'apprécierais vraiment votre aide, je peux poster toute la fonction aussi si nécessaire être.Comment imprimer sur l'écran la valeur d'un compteur masm32
_calcGravedad:
mov edx, G // G stored in edx
inc edx //increases edx
mov G, edx //returns edx to G
//here I try to convert my int G variable (the counter) into a char[]
//so i can print it, I'm not sure of this part, it doesnt work
lea eax, G //stores memory addres of G into eax
push eax //push eax into the stack
call byte ptr _itoa_s //calls the conversion function from c
pop edx //transfers the result to edx
mov gravedad, edx //moves the result to a char[] variable
//here's the print function call
lea eax, gravedad //get address of gravedad
push eax //push it into the stack
lea eax, texto //push the print format "%s\n" onto the stack
push eax //
call DWORD ptr printf //calls the print function
pop edx //cleans the stack
pop edx //
Vous devriez appeler le noyau OS via un appel système, 'write' –
@self: Faire un _syscall_ directement sur les plates-formes Win32/Win64 est généralement mal vu puisque MS a été connu pour les changer au fil du temps. L'appel de fonctions dans kernel32.dll et user32.dll qui enveloppent les appels système est préférable, ou dans ce cas appelant la bibliothèque _C_ qui est une autre couche d'abstraction. Peut-être que vous pensiez plutôt à Linux/BSD etc? –