extern io_get_dec, io_print_dec, io_newline
section .bss
A resd 10000 ;массив
section .text
global main
main:
call io_get_udec
mov ebx, eax ;N
mov ecx, 0 ;итератор
.L1:
cmp ebx, ecx
jge .L2 ;условие выхода из цикла
call io_get_dec
mov [A + ecx * 4], eax ;читаем новый элементик
add ecx, 1
jmp .L1
xor ecx, ecx ;итератор почистили
.L2: ;получаем неотсортированный массив
xor ecx, ecx
.L3 ;делаем пузырьком
cmp ebx, ecx
jge .L7 ;условие выхода из цикла
add ecx, 1
mov edx, 0 ;итератор для второго цикла
mov edi, ebx
dec edi
dec edi, ecx ;обозначили колво итераций 2 цикла
.L4:
cmp edi, edx
jge .L3 ;условие выхода из цикла (новая итерация первого)
add edx, 1
cmp [A + edx * 4], [A + edx * 4 + 4]
jle .L6
mov eax, [A + edx * 4]
mov [A + edx * 4], [A + edx * 4 + 4]
mov [A + edx * 4 + 4], eax ;свапнули
.L6:
jmp .L4
.L7:
xor ecx, ecx
.L8:
cmp ebx, ecx
jge .L9 ;условие выхода из цикла
call io_get_dec
call io_print_dec [A + ecx * 4], eax ;выводим новый элементик
add ecx, 1
jmp .L8
.L9:
xor eax, eax
ret