Articles > Assembleur > Faire un Sleep >

Faire un Sleep

Le code suivant permet de faire une fonction Sleep.

Code: ASM
  1.  
  2. ;------------------------------------------------
  3. ram16_Delay PROC
  4. ; Synopsis: Create an n-millisecond delay
  5. ; Receives: EAX = milliseconds
  6. ;------------------------------------------------
  7. pushad
  8. mov ebx,1000000
  9. mul ebx
  10. mov ebx,15085
  11. div ebx
  12. mov ecx,eax
  13. and ecx,ecx
  14. jz fin
  15. in al,61h
  16. and al,10h
  17. mov ah,al
  18. @@:
  19. in al,61h
  20. and al,10h
  21. cmp al,ah
  22. je @B
  23. mov ah,al
  24. dec ecx
  25. jnz @B
  26. fin:
  27. popad
  28. ret
  29. ram16_Delay ENDP
  30.  

Il fonctionne sur le principe que l'IRQ 0 (ou int 8, Timer System) est générée environ 18,2 fois par seconde.
L'IRQ 0 est générée tout les 65536 signaux émis par le timer.
A chaque signal, le bit 4 (LSB=0,MSB=7) du port 61h est inversé.

On peut donc mesurer le temps en comptant le nombre d'inversion de ce bit.

première page page précédente page suivante dernière page

Navigation rapide :

Page Description Dernière mise à jour
Faire un Sleep Create an n-millisecond delay 03 jan 2009 17:46:59

Articles > Assembleur > Faire un Sleep >

Auteur Commentaire

Ajouter un commentaire

Vous devez vous identifier pour pouvoir ajouter un commentaire.

première page page précédente page suivante dernière page

Navigation rapide :


Cette page a été générée le 21 mar 2010 13:24:31.
page d'accueil Jeremya's Web Site
jeremya.ironie.org

s'identifier

Nom d'utilisateur :
Mot de passe :

outils

qui est en ligne ?

3 visiteurs en ligne