Can anyone one explain me , how does this procedure works ??
disp32_proc:
    mov esi,char_count+7    ; load last byte address of char_count buffer in rsi
    mov ecx,8               ; number of digits
    cnt: 
    mov edx,0               ; make rdx=0 (as in div instruction rdx:rax/rbx)
    mov ebx,16              ; divisor=16 for hex
    div ebx
    cmp dl, 09h             ; check for remainder in RDX
    jbe add30
    add dl, 07h
    add30: 
    add dl,30h              ; calculate ASCII code 
    mov [esi],dl            ; store it in buffer 
    dec esi                 ; point to one byte back
    dec ecx                 ; decrement count 
    jnz cnt                 ; if not zero repeat
    print char_count,8      ; display result on screen 
ret
 
    