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