fork download
  1. section .data
  2. numbers db 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ; Масив чисел
  3. result times 15 db 0 ; Масив для результату
  4.  
  5. section .text
  6. global _start
  7.  
  8. _start:
  9. ; Ініціалізація
  10. lea rsi, [numbers] ; Вказівник на початок масиву numbers
  11. lea rdi, [result] ; Вказівник на початок масиву result
  12. mov rcx, 15 ; Кількість елементів у масиві
  13.  
  14. ; Запис чисел у стек
  15. push_loop:
  16. movzx rax, byte [rsi] ; Зчитуємо 1 байт (число) з масиву numbers
  17. push rax ; Записуємо число у стек
  18. inc rsi ; Переходимо до наступного елемента масиву
  19. loop push_loop ; Зменшуємо rcx, повторюємо, якщо rcx > 0
  20.  
  21. ; Читання чисел зі стека у зворотному порядку
  22. mov rcx, 15 ; Знову 15 елементів для зчитування
  23.  
  24. pop_loop:
  25. pop rax ; Зчитуємо число зі стеку
  26. mov byte [rdi], al ; Записуємо молодший байт (число) у result
  27. inc rdi ; Переходимо до наступної позиції у result
  28. loop pop_loop ; Зменшуємо rcx, повторюємо, якщо rcx > 0
  29.  
  30. mov rax, 1 ; Системний виклик write
  31. mov rdi, 1 ; Файловий дескриптор (stdout)
  32. lea rsi, [result] ; Вказівник на масив output
  33. mov rdx, 16 ; Довжина масиву (15 символів + новий рядок)
  34. syscall
  35.  
  36. ; Завершення програми
  37. mov rax, 60 ; Системний виклик exit
  38. xor rdi, rdi ; Код завершення = 0
  39. syscall
Success #stdin #stdout 0s 5272KB
stdin
Standard input is empty
stdout