diff --git a/x86-64/in-out/in-out b/x86-64/in-out/in-out new file mode 100755 index 0000000..ae10675 Binary files /dev/null and b/x86-64/in-out/in-out differ diff --git a/x86-64/in-out/in-out.asm b/x86-64/in-out/in-out.asm index d50875e..2ecf350 100644 --- a/x86-64/in-out/in-out.asm +++ b/x86-64/in-out/in-out.asm @@ -4,8 +4,22 @@ segment readable executable entry $ ; read from stdin - xor rax, rax + xor rax, rax ; is rax and rax equal to itself? yes? rax is set to 0 (for sys_read) + xor rdi, rdi ; same thing but rdi (for stdin) + mov rsi, buf ; direct addressing - move address of buf to rsi (buffer address) + mov rdx, 80 ; buffer size + syscall + ; write to stdout + mov rax, 1 ; sys_write + mov rdi, 1 ; stdout + mov rdx, 80 + syscall + + ; exit program + xor rdi, rdi ; exit code 0 + mov rax, 60 ; sys_exit + syscall segment readable writable buf rb 80