Wymiana sortowania bąbelków zespołu
Próbuję wykonać sortowanie bąbelkowe w zespole x86 (tak, musi to być bańka, ponieważ nie obawiam się optymalizacji prędkości w odniesieniu do różnych rodzajów sortowania) iz jakiegoś powodu mój kod nie zamieni niezbędnych wartości. Oto mój kod
mov eax, list ;store list in eax
mov edx,[eax+4*edi-4] ;temp = var1
cmp edx,[eax+edi*4] ;compare
JLE SECOND_LOOP ;jump if var1 < var2
mov [eax+4*edi-4],[eax+edi*4] ;var1 = var2
mov [eax+edi*4], edx ;var2 = temp
jmp SECOND_LOOP
Na ostatniej instrukcji mov, gdzie ma załadować temp z powrotem na adres, to ... nie. Rejestr EAX ma adres początkowy tablicy, która zawiera moją listę wartości
0x*starting address* 0a 00 00 00 ec ff ff ff 05 00 00 00 0c 00 00 00 1e 00 00 00 fb ff ff ff ea
0x*address after * ff ff ff 37 00 00 00 34 00 00 00 00 00 00 00
a następny adres zawiera kilka kolejnych numerów. Po przecinku liczby są10 -20 5 12 30 -5 -22 55 52 0
. Zasadniczo teraz próbuję się poruszyćFFFFFFEC
do0000000A
a potem ruszaj się0000000A
doFFFFFFEC
. Mogę zapisać go w moim rejestrze tymczasowym EDX, ale nie mogę zapisać wartości EDX w konkretnym adresie. Jakaś pomoc?