Hello,
Looking at your codes - all what it does is calling syscalls.
If you could get rid of perror() (and instead just display error number instead of string), and use execv() instead of execvp() (the one which don't use PATH environment variable to execute program) the change to assembly code is trivial, and no need for standard C library (program can be link static).
If you don't want to lose functions (functionality?) and the assembly program can link with libc, no problem to do rewrite.
If you don't want to lose functionality, and you don't want to use C library, please add 30$ for implementation of full execve() and perror() functionality.
With regards,
Jakub.