Write simple buble sort in nasm x86.
%include "io.inc"
section .bss
n resd 1
arr resd 1000000
section .text
global main
main:
mov ebp, esp; for correct debugging
GET_UDEC 4, n
xor ecx, ecx
xor esi, esi
mov edi, 1
l1:
cmp ecx, [n]
je l2
GET_DEC 4, [arr + ecx * 4]
inc ecx
jmp l1
l2:
mov ecx, -1
l4:
inc ecx
cmp ecx, [n]
je l3
mov ebx, -1
l6:
inc ebx
cmp ebx, [n]
je l4
mov eax, [arr + ebx * 4]
inc ebx
mov edx, [arr + ebx * 4]
dec ebx
cmp edx, eax
jl l5
jmp l6
l5:
xchg edx, eax
mov [arr + ebx * 4], eax
inc ebx
mov [arr + ebx * 4], edx
dec ebx
jmp l6
l3:
cmp esi, [n]
je l7
mov eax, [arr + esi * 4]
PRINT_DEC 4, eax
PRINT_STRING " "
inc esi
jmp l3
l7:
xor eax, eax
ret