extern puts %include "../inc/case_func.inc" global case_func section .data tempstore db 0 argument_error db "Argument Error!... either too many args or too little please fix", 0 section .text global main main: sub rsp, 8 ;enter cmp rdi, 2 jne _argument_error ;if its not exactly 2 then exit add rsi, 8 ;get the second argument because the first argument is the path mov r8, [rsi] ;this block here fenagles the pointer into memeory instead of a register mov [tempstore], r8 ; i also really with i had the abilty to mov [thing1], [thing2] mov rdi, [tempstore] call case_func ;case_func modifies the text you send it mov rdi, [tempstore] cld call puts ;this is the puts way of printing a string _end: add rsp, 8 ;exit ret _argument_error: mov rdi, argument_error cld call puts jmp _end