Сборка пузыря сортировка своп
Я пытаюсь выполнить пузырьковую сортировку в сборке x86 (да, она должна быть пузырьковой, так как меня не волнует оптимизация скорости для различных типов сортировок), и по какой-то причине мой код не поменяет местами необходимые значения. Вот мой код
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
В последней команде mov, в которой предполагается загрузить временную переменную обратно в адрес, он не выполняет. Регистр EAX имеет начальный адрес массива, который содержит мой список значений
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
и следующий адрес содержит еще несколько цифр. В десятичных числах10 -20 5 12 30 -5 -22 55 52 0
, По сути, сейчас я пытаюсь двигатьсяFFFFFFEC
в0000000A
а затем двигаться0000000A
вFFFFFFEC
, Я могу сохранить его в моем временном регистре EDX, но не могу сохранить значение EDX по указанному адресу. Любая помощь?