Lepší funkce pro čekání

Jelikož funkce delay z ukázkového programu má mnoho potíží, můžete místo ní použít následující:

.386
delay:
   push eax
   push es
   push word ptr 0
   pop  es
   add  eax, dword ptr es:[046ch]
vnitrni:
   cmp  dword ptr es:[046ch], eax
   jb   vnitrni
   pop  es
   pop  eax
   ret

Před voláním uložte do registru EAX délku čekání v jednotkách 55 ms (tzn. EAX=18 bude čekat přibližně 1 sekundu). Např:

   ; počkej 1.5 sekundy
   mov  eax, 27
   call delay

Jelikož funkce využívá 32-bitovou aritmetiku, funguje pouze na procesorech řady 386 a lepších. Pro zapnutí instrukcí procesoru 386 je použita direktiva .386

Stručné vysvětlení

Na adrese 0000:046Ch je na PC uložen čtyřbajtový čítač, který udává počet 55ms tiků od restartu počítače. Funkce nejprve spočítá hodnotu, kterou má tento čítač mít po požadované pauze a pak čeká, než tuto hodnotu dosáhne.

NAVRCHOLU.cz