Guest User

Untitled

a guest
Jan 18th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.78 KB | None | 0 0
  1. section .data
  2. err_msg: db "argument error", 0xa
  3. newline: db 0xa
  4. msg_size: equ 15
  5.  
  6. section .text
  7. global _start
  8.  
  9. _start:
  10. pop rax
  11. cmp rax, 2
  12. jne .arg_error
  13.  
  14. ; write argument
  15. add rsp, 8
  16. pop rdi ; first argument
  17.  
  18. mov r8, 0
  19. call .write
  20.  
  21. jmp .exit
  22.  
  23. .write:
  24. inc rdi
  25. inc r8
  26.  
  27. ; exit when rsi is 0
  28. cmp [rdi], byte 0
  29. jne .write
  30.  
  31. sub rdi, r8
  32.  
  33. ; output argument
  34. mov rax, 1
  35. mov rsi, rdi
  36. mov rdx, r8
  37. mov rdi, 1
  38. syscall
  39.  
  40. mov rax, 1
  41. mov rsi, newline
  42. mov rdx, 1
  43. mov rdi, 1
  44. syscall
  45.  
  46. ret
  47.  
  48. ; output argument error message
  49. .arg_error:
  50. ; write stdin
  51. mov rax, 1
  52. mov rsi, err_msg
  53. mov rdx, msg_size
  54. mov rdi, 1
  55. syscall
  56.  
  57. ; exit status code 1
  58. mov rax, 60
  59. mov rdi, 1
  60. syscall
  61. ret
  62.  
  63. ; exit function
  64. .exit:
  65. mov rax, 60
  66. mov rdi, 0
  67. syscall
  68. ret
Add Comment
Please, Sign In to add comment