Forum > Assembleur > Faire un Sleep >

Faire un Sleep

Auteur Message
jeremya Posté le 16 mar 2007 13:22:42

Administrateur
Administrateur

Auteur
Auteur

Modérateur
Modérateur

Inscrit le : 20 sep 2005
Localisation : Nord-Pas de Calais
Emploi :
Loisirs :

Le code suivant faire de faire une fonction Sleep.

 
;------------------------------------------------ 
ram16_Delay PROC 
; Synopsis: Create an n-millisecond delay 
; Receives: EAX = milliseconds 
;------------------------------------------------ 
  pushad 
  mov ebx,1000000 
  mul ebx 
  mov ebx,15085 
  div ebx 
  mov ecx,eax 
  and ecx,ecx 
  jz fin 
  in al,61h 
  and al,10h 
  mov ah,al 
  @@: 
  in al,61h 
  and al,10h 
  cmp al,ah 
  je @B 
  mov ah,al 
  dec ecx 
  jnz @B 
  fin: 
  popad 
  ret
ram16_Delay ENDP
 

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.

Messages : 60 http://jeremya.ironie.org

répondre

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

Navigation rapide :

Forum > Assembleur > Faire un Sleep >


Cette page a été générée le 07 sep 2008 15:36:04.
clipart home livre lecture book JEREMYA
WEBSITE
jeremya.ironie.org

s'identifier

Nom d'utilisateur :
Mot de passe :

outils

qui est en ligne ?

10 visiteurs en ligne

sondage qualité

1-mauvais - excellent-5
Design :
1 5
Ergonomie :
1 5
Contenu :
1 5
Structure :
1 5
Ensemble :
1 5
1-mauvais - excellent-5
Commentaire :