global hextostr extern printf section .data f db 'Digit: %x',10,0 section .text hextostr: push rbp mov rbp, rsp push rbx push rcx push rdx push rsi push rdi mov rax,[rbp+24] ; source mov rcx,[rbp+16] ; buffer xor rbx, rbx mov bx,16 xor rsi,rsi ; for counter xor rdx,rdx ; for div lstart: div bx cmp dx, 0xA jl digit jmp letter digit add dx, '0' jmp putc letter: add dx, 'A'-10 putc: mov [rcx+rsi], dx xor dx,dx inc rsi cmp rsi,4 jl lstart mov rdx,rcx mov rcx,2 revert: mov rdi,4 sub rdi,rcx mov al,[rdx+rdi] mov bl,[rdx+rcx-1] mov [rdx+rdi],bl mov [rdx+rcx-1],al loop revert mov rax,0 jmp lend error: mov rax,1 lend: pop rdi pop rsi pop rdx pop rcx pop rbx pop rbp ret 16