org 100h
use16
        in      al,21h          ; Save current interupts
        push    ax
        mov     al,0feh         ; Enable only timer tick
        out     21h,al
        mov     ax,40h          ; Set DS to timer tick segment
        mov     ds,ax
        mov     bx,[6ch]        ; Get timer tick
.l1:    cmp     bx,[6ch]        ; Wait for timer tick to change
        je      .l1
        rdtsc                   ; Save tsc
        push    eax
        mov     bx,[6ch]        ; Get timer tick
.l2:    cmp     bx,[6ch]        ; Wait for timer tick to change
        je      .l2
        rdtsc                   ; Read tsc
        pop     ebx
        sub     eax,ebx         ; Get timer differnce
        mov     ebx,0x1234dd    ; Multiply by PIT frequency
        mul     ebx
        mov     [cs:tempdat],eax        ; Easier than rcr eax and edx 16 times
        mov     [cs:tempdat+4],edx      ; Divide by 10000h for counter 0
        mov     eax,[cs:tempdat+2]
        call    print_dec
        pop     ax     
        out     21h,al
        int     20h

print_dec:
        push    word 0
  .zero_loop:
        mov     cx,3
  .loop:
        xor     edx,edx
        mov     ebx,10
        div     ebx
        or      dl,30h
        push    dx
        or      eax,eax
        jz      .end_numb
        loop    .loop
        push    word ','+0e00h
        jmp     .zero_loop
  .end_numb:
        pop     dx
        or      dx,dx
        jz      .end
        mov     ah,2
        int     21h
        jmp     .end_numb
  .end:
        ret

tempdat:
