global gets section .text gets: push rbp mov rbp,rsp push rbx push rcx push rdx push rsi push rdi mov rax,3 ; sys_read mov rbx,1 ; stdin mov rcx,[rbp+16] ; buffer mov rdx,4 ; buffer_size int 0x80 xor bl,bl xor ax,ax xor rcx,rcx xor rdx,rdx mov cx,4 mov rdi,[rbp+16] strtobin: mov al, byte [rdi+rcx-1] cmp al, 0xa je loend cmp al, 'A' jl digit cmp al, 'F' jg ferror sub al, 'A'-10 jmp addd digit: cmp al, '0' jl ferror cmp al, '9' jg ferror sub al, '0' addd: mov si, cx mov cl, bl shl ax, cl mov cx, si add bl, 4 add dx, ax loend: loop strtobin mov rax,[rbp+24] mov [rax],dx mov rax, 0 jmp fend ferror: mov rax, 1 fend: pop rdi pop rsi pop rdx pop rcx pop rbx pop rbp ret 16