Online Compiler Nasm

section .bss arr resd 10000 section .text extern io_get_dec, io_print_dec, io_newline global main main: call io_get_dec mov ecx, eax push ecx lea edi, [arr] input_start: cmp ecx, 0 je input_end call io_get_dec mov [edi], eax xor eax, eax add edi, 4 dec ecx jmp input_start input_end: lea edi, [arr] ; указатель на начало списка ;mov ebx, 0xffffffff pop ecx ; кол-во элементов mov esi, ecx push esi sort_start: ; сравниваем ел-нт edi с edi + 4 cmp ecx, 0 je sort_end 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 jmp sort_start sort_end: lea edi, [arr] pop ecx output_start: cmp ecx, 0 je output_end mov eax, [edi] call io_print_dec add edi, 4 dec ecx jmp output_start output_end: xor eax, eax ret
1) Этот код считывает количество элементов, затем сами элементы, сортирует их методом пузырька (один проход) и выводит в том же порядке.  
2) Обрати внимание, что текущая реализация выполняет только один проход сортировки, что недостаточно для полного упорядочивания массива. Также проверь границы при сравнении элементов, чтобы не выходить за пределы массива.