Online Compiler Nasm

extern io_get_dec, io_newline, io_print_dec, io_get_udec section .bss N resd 1 A resd 1 m resd 10000 N_1 resd 1 ; будет значение N-1 для цикла i resd 1 j resd 1 section .text global main main: call io_get_udec mov dword[N], eax mov dword[N_1], eax sub dword[N_1], 1 mov ecx, 0 .start_push: cmp ecx, dword[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 dword[i], 0 .start1: mov ecx, dword[i] cmp ecx, dword[N_1] je .end1 mov eax, dword[i] mov dword[j], eax add dword[j], 1 ; j=i+1 для второго цикла .start2: mov eax, dword[j] cmp eax, dword[N] je .end2 mov eax, dword[j] mov ebx, dword[i] mov edx, dword[m + 4*ebx] ; edx = m[i] cmp dword[m + 4*eax], edx jge .continue ; если >= усл не вып mov ecx, dword[m + 4*eax] mov dword[m + 4*ebx], ecx mov dword[m + 4*eax], edx jmp .continue .continue: inc dword[j] jmp .start2 .end2: inc dword[i] jmp .start1 .end1: xor ecx, ecx .start_print: cmp ecx, dword[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 целых чисел, сортирует их по возрастанию методом пузырька (или похожим на выбором) и выводит отсортированный массив.

2) Подсказки:
- Обрати внимание, что для сравнения используется `jge` (переход, если больше или равно), что означает сортировку по возрастанию.
- Переменные `i` и `j` хранятся в памяти, но для скорости лучше использовать регистры, где это возможно.