fork download
  1. section .data
  2. array dd 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ; Пример массива (32-битные элементы)
  3. array_len equ ($ - array) ; Длина массива в байтах
  4. num_elements equ array_len / 4 ; Количество элементов
  5.  
  6. section .text
  7. global _start
  8.  
  9. _start:
  10. mov esi, array ; Указатель на начало массива (первый элемент)
  11. mov edi, array + array_len - 4 ; Указатель на конец массива (последний элемент)
  12. mov ecx, num_elements / 2 ; Количество итераций (достаточно половины длины)
  13.  
  14. reverse_loop:
  15. ; Обмен значений между esi и edi
  16. mov eax, [esi] ; Загружаем значение из начала
  17. mov ebx, [edi] ; Загружаем значение из конца
  18. mov [esi], ebx ; Сохраняем значение конца в начало
  19. mov [edi], eax ; Сохраняем значение начала в конец
  20.  
  21. ; Перемещаем указатели
  22. add esi, 4 ; Сдвигаем начало вправо
  23. sub edi, 4 ; Сдвигаем конец влево
  24.  
  25. ; Повторяем цикл
  26. loop reverse_loop
  27.  
  28. ; Завершение программы
  29. mov eax, 1 ; Системный вызов exit
  30. xor ebx, ebx ; Код возврата 0
  31. int 0x80
Success #stdin #stdout 0.01s 5288KB
stdin
Standard input is empty
stdout
Standard output is empty