fork download
  1. section .data
  2. array db 64, 25, 12, 22, 11 ; Пример массива для сортировки
  3. array_size equ $ - array ; Размер массива
  4.  
  5. section .text
  6. global _start
  7.  
  8. _start:
  9. ; Ваш код начинается здесь
  10.  
  11. mov ecx, array_size ; Загрузка размера массива в ecx
  12.  
  13. outer_loop:
  14. mov esi, 0 ; Индекс текущего минимального элемента
  15. mov ebx, esi ; Индекс для внутреннего цикла
  16.  
  17. inner_loop:
  18. cmp ebx, ecx ; Проверка окончания внутреннего цикла
  19. je inner_loop_done ; Если равно, завершаем внутренний цикл
  20.  
  21. mov eax, ebx ; Загружаем индекс в eax
  22. add eax, array ; Вычисляем адрес текущего элемента массива
  23. mov edx, [eax] ; Загружаем значение текущего элемента в edx
  24.  
  25. mov eax, esi ; Загружаем индекс минимального элемента в eax
  26. add eax, array ; Вычисляем адрес минимального элемента массива
  27. mov edi, [eax] ; Загружаем значение минимального элемента в edi
  28.  
  29. cmp edx, edi ; Сравниваем текущий элемент с минимальным
  30. jge not_less ; Если текущий элемент >= минимального, переходим к not_less
  31.  
  32. ; Если текущий элемент < минимального, обновляем индекс минимального элемента
  33. mov esi, ebx
  34.  
  35. not_less:
  36. inc ebx ; Увеличиваем индекс внутреннего цикла
  37. jmp inner_loop ; Переходим к следующей итерации внутреннего цикла
  38.  
  39. inner_loop_done:
  40. ; Обмен местами элементов в массиве
  41. mov eax, esi ; Загружаем индекс минимального элемента в eax
  42. add eax, array ; Вычисляем адрес минимального элемента массива
  43. mov ecx, [eax] ; Загружаем значение минимального элемента в ecx
  44.  
  45. mov eax, 0 ; Загружаем индекс первого элемента в массиве
  46. add eax, array ; Вычисляем адрес первого элемента массива
  47. mov edx, [eax] ; Загружаем значение первого элемента в edx
  48.  
  49. ; Меняем местами элементы
  50. mov eax, 0 ; Загружаем индекс первого элемента в массиве
  51. add eax, array ; Вычисляем адрес первого элемента массива
  52. mov [eax], ecx ; Записываем значение минимального элемента в первый элемент
  53.  
  54. mov eax, esi ; Загружаем индекс минимального элемента в eax
  55. add eax, array ; Вычисляем адрес минимального элемента массива
  56. mov [eax], edx ; Записываем значение первого элемента в место минимального
  57.  
  58. ; Уменьшаем размер неотсортированной части массива
  59. dec ecx
  60. cmp ecx, 1 ; Проверка окончания внешнего цикла
  61. jg outer_loop
  62.  
  63. ; Ваш код заканчивается здесь
  64.  
  65. ; Ваш код для вывода отсортированного массива в консоль
  66. ; может быть добавлен здесь
  67.  
  68. ; Завершаем программу
  69. mov eax, 1 ; Системный вызов для выхода
  70. xor ebx, ebx ; Код возврата 0
  71. int 0x80 ; Вызываем прерывание
  72.  
  73.  
Success #stdin #stdout 0s 5268KB
stdin
Standard input is empty
stdout
Standard output is empty