begin process at 2012 05 24 02:02:40
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Delphi et asm

 > ATTENDRE X SECONDES DANS UNE BOUCLE

ATTENDRE X SECONDES DANS UNE BOUCLE


 Information sur la source

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Delphi et asm Niveau :Débutant Date de création :05/06/2003 Date de mise à jour :20/08/2003 18:09:05 Vu / téléchargé :4 093 / 129

Auteur : Nebula

Ecrire un message privé
Site perso
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

J'ai posté une source en Delphi sur delphifr, je viens de la convertir en asm... Le but est donc de pouvoir attendre X ms avant l'itération suivante dans une boucle, ceci est mon premier code asm fonctionnel, y'a peut etre pas de quoi grimper aux rideaux mais je suis content lol :)

Source

  • program SleepEx;
  • {$APPTYPE CONSOLE}
  • uses
  • SysUtils, Windows;
  • var
  • i: Integer;
  • procedure Pause(t: DWORD); register;
  • asm
  • push ecx
  • push ebx
  • mov ecx, eax
  • call GetTickCount
  • mov ebx, eax
  • @attente:
  • push ebx
  • push ecx
  • push 1
  • call Sleep
  • pop ecx
  • pop ebx
  • call GetTickCount
  • sub eax, ebx
  • cmp eax, ecx
  • jnae @attente
  • pop ebx
  • pop ecx
  • end;
  • begin
  • for i := 0 to 9 do begin
  • writeln('i=', i);
  • Pause(1000);
  • end;
  • end.
program SleepEx;

{$APPTYPE CONSOLE}

uses
  SysUtils, Windows;

var
  i: Integer;

procedure Pause(t: DWORD); register;
asm
  push ecx
  push ebx
  mov ecx, eax
  call GetTickCount
  mov ebx, eax
@attente:
  push ebx
  push ecx
  push 1
  call Sleep
  pop ecx
  pop ebx
  call GetTickCount
  sub eax, ebx
  cmp eax, ecx
  jnae @attente
  pop ebx
  pop ecx
end;

begin
  for i := 0 to 9 do begin
    writeln('i=', i);
    Pause(1000);
  end;
end.

 Conclusion

Le sleep sert à "rendre la main", s'il existe une fonction dédiée (comme pthread_yield), je ne la connais pas... N'hésitez pas à me donner l'API adéquate, si vous la connaissez ;)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

CRYPTAGE / DÉCRYPTAGE DE STRING (ALGORITHME TRIVIAL)

 Sources de la même categorie

Source avec Zip APPELER UNE API EN ASM AVEC DELPHI par DeadlyPredator
RENVOIT UNE CHAINE DE X FOIS LE CARACTÈRE DEMANDÉ par cutmaster
PETIT ÉQUIVALENT DU ?: DU C EN DELPHI POUR LES CHAINES, LONG... par cutmaster
AVOIR LE NOM DU JOUR DE LA SEMAINE DÉSIGNÉ par cutmaster
REMPLISSAGE FORMATÉ D'UN SHORTSTRING par cutmaster

Commentaires et avis

Commentaire de Kaid le 06/06/2003 10:49:43

Pourquoi ne pas utiliser tout simplement la fonction Sleep(DWORD dwMilliseconds) de l'API ?

Commentaire de Nebula le 06/06/2003 11:43:16

Ben dans le code en Delphi, j'ai un Application.ProcessMessages, ce qui me permet de ne pas bloquer l'appli pendant le Sleep...

Par contre dans la fonction asm, c'est vrai qu'il n'y a pas de différence, c'est juste que je voulais essayer de recoder cette petite procédure en asm pour voir si j'y arrivais, rien de plus, faut bien commencer quelque part :p

Commentaire de Nebula le 20/08/2003 16:36:49

Et voila la version non bloquante...
L'appel de Sleep sert juste à rendre la main à l'ordonnanceur, si quelqu'un connait la fonction exacte permettant de faire cela (un peu comme pthread_yield), je suis intéressé ;)

Commentaire de viran le 27/07/2005 21:19:04

Pourriez vous donner une exemple, par exemple une boucle qui attends 5 sc merci.

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 3,760 sec (3)

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