use64 global main extern scanf extern printf extern puts section text scanf_integer: push rbp mov rbp, rsp sub rsp, 8 lea rax, [rbp - 8] mov rsi, rax mov rdi, read_fmt xor rax, rax call scanf mov rax, [rbp - 8] leave ret main: push rbp mov rbp, rsp sub rsp, 16 xor rax, rax mov [rbp - 8], rax mov rdi, input_text call printf call scanf_integer mov [rbp - 16], rax %macro iteration 0 call scanf_integer mov rdx, [rbp - 16] cmp rax, rdx jg %%.continue mov rbx, [rbp - 8] inc rbx mov [rbp - 8], rbx %%.continue: %endmacro %rep 5 iteration %endrep mov rbx, [rbp - 8] mov rdi, write_fmt mov rsi, rbx call printf xor rax, rax leave ret section data input_text db "G = ", 0x00 read_fmt db "%lld", 0x00 write_fmt db "Result = %lld", 0x0A, 0x00