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
add edi, 4
dec ecx
cmp ecx, 0
jne input_start
input_end:
cycle_start:
mov ebp, 0
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
mov ebp, 1
next_el:
add edi, 4
dec ecx
cmp ecx, 0
jne sort_start
sort_end:
cmp ebp, 1
je cycle_start
lea edi, [arr]
mov eax, [edi]
add edi, 4
call io_print_dec
mov ecx, esi
dec ecx
output_start:
push ecx
mov eax, ' '
call io_print_char
mov eax, [edi]
call io_print_dec
pop ecx
add edi, 4
dec ecx
cmp ecx, 0
jne output_start
output_end:
call io_newline
xor eax, eax
ret