Advertisement
Guest User

Untitled

a guest
Mar 17th, 2017
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. ; main.asm
  2. ;
  3. ; A simple program to write to standard output (stdout) and read from standard input (stdin)
  4. ;
  5. ; (C) 2017, Richard Marks <ccpsceo@gmail.com>
  6. ; MIT License
  7. ;
  8. global start
  9. stdout equ 1
  10. stdin equ 0
  11. sys_exit equ 0x2000001
  12. sys_write equ 0x2000004
  13. sys_read equ 0x2000003
  14.  
  15. section .text
  16. start:
  17. mov rax, sys_write
  18. mov rdi, stdout
  19. mov rsi, login_msg
  20. mov rdx, login_msg.len
  21. syscall
  22.  
  23. mov rsi, username
  24. call read_string
  25.  
  26. mov rax, sys_write
  27. mov rdi, stdout
  28. mov rsi, lf
  29. mov rdx, 1
  30. syscall
  31.  
  32. mov rax, sys_write
  33. mov rdi, stdout
  34. mov rsi, password_msg
  35. mov rdx, password_msg.len
  36. syscall
  37.  
  38. mov rsi, password
  39. call read_string
  40.  
  41. mov rax, sys_write
  42. mov rdi, stdout
  43. mov rsi, lf
  44. mov rdx, 1
  45. syscall
  46.  
  47. mov rax, sys_write
  48. mov rdi, stdout
  49. mov rsi, welcome_msg
  50. mov rdx, welcome_msg.len
  51. syscall
  52.  
  53. mov rax, sys_write
  54. mov rdi, stdout
  55. mov rsi, username
  56. mov rdx, 0xff
  57. syscall
  58.  
  59. mov rax, sys_write
  60. mov rdi, stdout
  61. mov rsi, lf
  62. mov rdx, 1
  63. syscall
  64.  
  65. mov rax, sys_write
  66. mov rdi, stdout
  67. mov rsi, entry_msg
  68. mov rdx, entry_msg.len
  69. syscall
  70.  
  71. mov rax, sys_write
  72. mov rdi, stdout
  73. mov rsi, password
  74. mov rdx, 0xff
  75. syscall
  76.  
  77. mov rax, sys_exit
  78. mov rdi, 0
  79. syscall
  80.  
  81. ; proc read_string (char* destination)
  82. ; use:
  83. ; mov rsi, {buffer}
  84. ; call read_string
  85. read_string:
  86. mov rax, sys_read
  87. mov rdi, stdin
  88. ; mov rsi, buffer
  89. mov rdx, 0xff
  90. syscall
  91. ret
  92.  
  93. section .bss
  94. buffer: resb 0xff
  95. username: resb 0xff
  96. password: resb 0xff
  97.  
  98. section .data
  99.  
  100. lf: db 0xa
  101.  
  102. login_msg: db 'login: '
  103. .len equ $ - login_msg
  104.  
  105. password_msg: db 'password: '
  106. .len equ $ - password_msg
  107.  
  108. welcome_msg: db 'welcome, '
  109. .len equ $ - welcome_msg
  110.  
  111. entry_msg: db 'your password is '
  112. .len equ $ - entry_msg
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement