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
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.