extern gets extern writef extern hextostr extern printf %macro check_error 0 cmp rax, 0 jnz error %endmacro section .data outfile db 'out',0 errstr db 'Input error! 16-bit HEX-number expected!',10,0 errsz dw $-errstr section .text global main main: push rbp mov rbp, rsp push source push buffer call gets check_error mov rsi,[source] push rsi push result call hextostr check_error push outfile push result call writef check_error mov rbx, 0 jmp stop error: mov rax, 4 mov rbx, 1 mov rcx, errstr mov rdx, [errsz] int 0x80 mov rbx, 1 stop: mov rax, 1 int 0x80 section .data source dw 0 result db '0000' buffer db '0000'