Sleep is not a counter, it's a 'pause' in your code execution
Suspends the execution of the current thread until the time-out interval elapses.
invoke Sleep,1000 ;pause for 1000msec or 1sec
GetTickCount can be used as a 'counter'
Retrieves the number of milliseconds that have elapsed since the system was started, up to 49.7 days.
Call [GetTickCount] ;x
mov esi,eax
...
...
Call [GetTickCount] ;y
sub eax,esi ;eax has the time (in msec) that was needed to execute the code between x and y
i wish someone could explain me music theory so good.. 