Décompter une variable sous fasmw [Résolu]

Signaler
Messages postés
4
Date d'inscription
mercredi 8 décembre 2004
Statut
Membre
Dernière intervention
9 décembre 2004
-
Messages postés
4
Date d'inscription
mercredi 8 décembre 2004
Statut
Membre
Dernière intervention
9 décembre 2004
-
bonjour.

j ai commencé la programmation sous fasmw156 récement et j aurai besoin d aide pour un probleme tout bete :

je cherche a pouvoir decrementer une variable pour créer une ou plusieurs boucles de temporisation pour un petit programme

je sai qu il faut que j utilise ecx puisque c est le compteur mais je ne connai pas sa syntaxe...

dès fois que ca interresse quelqu un , le but est de faire clignoter la barre des taches de windows -_-"

format PE GUI 4.0
include '%fasminc%\win32a.inc'

boucle:
invoke FindWindow,_fen,0
invoke ShowWindow,eax,SW_HIDE
invoke FindWindow,_fen,0  ;ne sachant pas envoyer eax dans une variable , je repete..... 
invoke ShowWindow,eax,SW_SHOWNORMAL

cmp ecx,<??????>
jne boucle
jmp exit

exit:
        invoke  ExitProcess,0

_fen db 'shell_traywnd',0

data import

 library kernel32,'KERNEL32.DLL',\
         user32,'USER32.DLL',\
         
 import kernel32,\
        ExitProcess,'ExitProcess'

 import user32,\
        MessageBox,'MessageBoxA',\
        FindWindow,'FindWindowA',\
        ShowWindow,'ShowWindow'

end data


si quelqu un peut m aider ca doit pas etre grand chose mais c est primordial pour le fonctionnement de ce programme innutile et le fonctionnement de futurs programmes moins innutiles ....

merci d avance

6 réponses

Messages postés
4
Date d'inscription
mercredi 8 décembre 2004
Statut
Membre
Dernière intervention
9 décembre 2004

",0" pour signifier la fin de la ligne sous fasm...
en fait c était totallement innutile ^^"

donc apres aide de prof le code qui marche :

format PE GUI 4.0
include '%fasminc%\win32a.inc'

invoke FindWindow,_fen,0
mov ebx,eax
boucle:
invoke ShowWindow,ebx,SW_HIDE
invoke ShowWindow,ebx,SW_SHOWNORMAL
dec [_compteur]
jnz boucle

jmp exit

exit:
invoke ExitProcess,0

_fen db 'shell_traywnd',0
_compteur dd 100

data import

library kernel32,'KERNEL32.DLL',\
user32,'USER32.DLL'

import kernel32,\
ExitProcess,'ExitProcess'

import user32,\
FindWindow,'FindWindowA',\
ShowWindow,'ShowWindow'

end data


avec l utilisation du ebx pour retenir le eax de findwindow
merci au passage pour
Windows preserve tous les registres hormis EAX, ECX et EDX.

voila
a+
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
24
mais non dans un tel exemple tu n'utiliseras pas ECX car il est ecrase entre chaque appel API.

Windows preserve tous les registres hormis EAX, ECX et EDX.

ciao...
BruNews, MVP VC++
Messages postés
4
Date d'inscription
mercredi 8 décembre 2004
Statut
Membre
Dernière intervention
9 décembre 2004

arf..
j avai remarqué pour eax mais je pensai que comme ecx est un compteur il aurai pu etre utilisé ici...

donc il faudrai introduire une variable a decompter pour la boucle que je veu realiser..

par contre si je voulais utiliser ecx pour une tempo entre
invoke FindWindow,_fen,0
invoke ShowWindow,eax,SW_HIDE

et
invoke FindWindow,_fen,0 
invoke ShowWindow,eax,SW_SHOWNORMAL

il ne serai pas écrasé non ?

merci du tuyau, je vais voir cette aprem quelqu un qui devrai pouvoir repondre a ma question mais si vous pouviez quand meme m aider....

a+
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
24
mets un DWORD en memoire .data en ce cas:

compteur DD 100

boucle:
.....
....
dec compteur
jnz boucle

ciao...
BruNews, MVP VC++
Messages postés
4
Date d'inscription
mercredi 8 décembre 2004
Statut
Membre
Dernière intervention
9 décembre 2004

comme j utilise fasmw , je n ai pas de .data , tout est dans le meme fichier (je ne sais pas si j ai bien compri ton post : je debute)

j ai essayé :

dec compteur
jne boucle

_compteur dw 100,0

dec compteur
jne boucle

_compteur dd 100,0


mais je recupere "invalid operand" comme erreur a la compilation

j abuse ou je peu demander encore un peu d aide ?
merci quoi qu il en soit !
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
24
_compteur dd 100,0 ??? pourquoi une virgule ?

excuse mais j'utilise MASM32 avec pure syntaxe des manuels Intel, alors...

ciao...
BruNews, MVP VC++