push SEG_BIOS_DATA_AREA
pop es
mov si, OFFSET_TICK_COUNT ; The BIOS tick count updateds
mov ebx, DWORD PTR es:[si] ; 18.2 times per second.
wait_new_tick:
cmp ebx, DWORD PTR es:[si] ; Wait for tick count change
je wait_new_tick
add ebx, INTERVAL_IN_TICKS + 1; Set time delay value ticks.
wait_elapsed_ticks:
cmp ebx, DWORD PTR es:[si] ; Have we hit the delay?
jne wait_elapsed_ticks