Mam do napisania program, który sortuje mi tablice do max 5000tys liczb każda liczba to 192bit.
Mój program wygląda tak:

 # Wczytywanie do 5000 liczb 192-bitowych ze standardowego strumienia wejsciowego
#(32*6=192)

SYSEXIT      =1
SYSREAD      =3
SYSWRITE     =4
STDOUT       =1
STDIN        =0
EXIT_SUCCESS =0
N   =5

.align 32

.text
znak: .ascii "asd"

.data
#msg: .msg 5000
#msg_len = .-msg
tablica_liczb: .space 2400
#liczba2:.space 0x26, 0x10
tablica_len = .-tablica_liczb

.global _start

_start:
mov $SYSREAD, %eax  # wczytanie znaków
mov $STDIN, %ebx
mov $tablica_liczb, %ecx

mov $tablica_len, %edx
int $0x80   

xor %ecx, %ecx
xor %edi, %edi
movl $5, %esi
jmp wczytaj_liczby

nastepna:
cmpl $tablica_len, %edi
je warunek
mov $5, %esi
addl $24, %edi

wczytaj_liczby:
movl tablica_liczb(%edi,%esi,4), %eax
addl $24, %edi
movl tablica_liczb(%edi,%esi,4), %ebx
subl $24, %edi
cmpl %eax, %ebx
jl zamien
decl %esi
cmp $0, %esi
je nastepna
jmp wczytaj_liczby

zamien:
movl $5, %esi
zamien_loop:
movl tablica_liczb(%edi, %esi, 4), %eax
addl $24, %edi
movl tablica_liczb(%edi,%esi,4), %ebx
movl %eax, tablica_liczb(%edi, %esi, 4)
subl $24, %edi
movl %ebx, tablica_liczb(%edi,%esi,4)
incl %esi
cmpl $0, %esi
je nastepna
jmp zamien_loop

warunek:
cmpl $0, %ecx
je koniec
xor %ecx, %ecx
movl $0, %edx
movl $5, %esi
jmp wczytaj_liczby

koniec: 

mov $SYSWRITE, %eax     # wypisywanie znakow 
mov $STDOUT, %ebx
mov $tablica_liczb, %ecx
mov $tablica_len, %edx
int $0x80

mov $SYSEXIT, %eax      # zakonczenie programu
mov $EXIT_SUCCESS, %ebx
int $0x80

po skompilowaniu wyskakuje mi narusznie pamięci, raczej nie umiem programować w asm, także proszę o wyrozumiałość.;)