Online Compiler Nasm

extern io_get_dec, io_newline, io_print_dec section .bss N resd 1 A resd 1 m resd 10000 num resd 1 N_1 resd 1 ; будет значение N-1 для цикла i resd 1 j resd 1 section .text global main main: call io_get_udec mov [N], eax mov [N_1], eax sub [N_1], 1 mov ecx, 0 .start_push: cmp ecx, [N] je .end_push call io_get_dec mov dword[m + 4*ecx], eax inc ecx jmp .start_push .end_push: ;for (int i=0; i<N-1; i++){ ; for (int j=i+1; j<N; j++){ ; if (m[j] < m[i]){ ; int tmp = m[i] ; m[i] = m[j] ; m[j] = tmp ; } ; } ;} mov [i], 0 .start1: mov eax, [i] mov [j], eax add [j], 1 cmp [i], [N_1] je .end1 .start2: cmp [j], [N] je .end2 mov eax, [j] mov ebx, [i] mov edx, dword[m + 4*ebx] cmp dword[m + 4*eax], edx jnl .continue mov edx, dword[m + 4*ebx] mov dword[m + 4*ebx], dword[m + 4*eax] mov dword[m + 4*eax], edx jmp .continue .continue: inc [j] jmp .start2 .end2: inc [i] jmp .start1 .end1: xor ecx, ecx .start_print: cmp ecx, [N] je .end_print mov eax, dword[m + 4*ecx] call io_print_dec call io_newline inc ecx jmp .start_print .end_print: xor eax, eax ret
1) Этот код считывает число N, затем N целых чисел в массив `m`, сортирует массив методом пузырька (или похожим на выбором) по возрастанию и выводит отсортированные элементы, каждый с новой строки.

2) Обрати внимание, что в коде используется `io_get_dec` (со знаком), но для размера массива N — `io_get_udec` (без знака). Убедись, что это соответствует заданию.  
Также в цикле сортировки используется инструкция `jnl` (jump if not less), которая работает для знаковых сравнений — это может привести к неожиданным результатам, если числа отрицательные.