Online Compiler Nasm

section .bss arr resd 10000 section .text extern io_get_dec, io_print_dec, io_newline, io_print_char global main main: call io_get_dec mov esi, eax mov ecx, esi lea edi, [arr] input_start: push ecx call io_get_dec pop ecx mov [edi], eax xor eax, eax add edi, 4 dec ecx cmp ecx, 0 jne input_start input_end: lea edi, [arr] mov ecx, esi dec ecx sort_start: ; сравниваем ел-нт edi с edi + 4 mov ebx, [edi] mov edx, [edi+4] cmp ebx, edx ja more jmp next_el more: ; меняет значение местами между регистрами mov [edi], edx mov [edi+4], ebx next_el: add edi, 4 dec ecx cmp ecx, 0 jne sort_start sort_end: lea edi, [arr] mov ecx, esi output_start: mov eax, [edi] push ecx call io_print_dec mov eax, ' ' call io_print_char pop ecx add edi, 4 dec ecx cmp ecx, 0 jne output_start output_end: call io_newline xor eax, eax ret
1) Этот код считывает количество элементов, затем сами элементы в массив и сортирует его методом "пузырька" (один проход), после чего выводит отсортированный массив.

2) Подсказки:
- Обрати внимание, что цикл сортировки выполняет только один проход по массиву, поэтому массив будет отсортирован не полностью. Для полной сортировки нужен вложенный цикл.
- При обмене элементов в секции `more` используется регистр `ebx`, но его значение уже загружено ранее — убедись, что это корректно в контексте алгоритма.