fork download
  1. section .data
  2. array dw 5, 2, 8, 1, 9
  3. array_len equ $-array
  4. num_elements equ array_len / 4
  5.  
  6. section .bss
  7. max resd 1
  8.  
  9. section .text
  10. global _start
  11.  
  12. _start:
  13. ; Инициализация
  14. mov esi, array ; Указатель на начало массива
  15. mov ecx, num_elements ; Счетчик элементов
  16. mov eax, [esi] ; Предполагаем, что первый элемент - максимальный
  17. mov [max], eax
  18.  
  19. loop_max:
  20. ; Переходим к следующему элементу
  21. add esi, 4
  22. dec ecx
  23.  
  24. ; Проверяем, не достигли ли конца массива
  25. cmp ecx, 0
  26. je end_loop
  27.  
  28. ; Сравниваем текущий элемент с текущим максимумом
  29. cmp [esi], eax
  30. jle loop_max ; Если текущий элемент <= максимума, переходим к следующему
  31.  
  32. ; Если текущий элемент > максимума, обновляем максимум
  33. mov eax, [esi]
  34. mov [max], eax
  35.  
  36. jmp loop_max
  37.  
  38. end_loop:
  39. ; Вывод результата (максимума)
  40. mov eax, 4 ; sys_write
  41. mov ebx, 1 ; stdout
  42. mov ecx, max ; Указатель на максимум
  43. mov edx, 4 ; Размер выводимых данных
  44. int 0x80
  45.  
  46. ; Завершение программы
  47. mov eax, 1 ; sys_exit
  48. xor ebx, ebx
  49. int 0x80
  50. assembly
  51.  
Success #stdin #stdout 0.01s 5276KB
stdin
Standard input is empty
stdout