Troca de classificação de bolhas de montagem

Eu estou tentando fazer um tipo de bolha na montagem x86 (sim, tem que ser bolha, como eu não estou preocupado com otimização de velocidade em relação a diferentes tipos de tipos) e por algum motivo, meu código não irá trocar os valores necessários. Aqui está meu código

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 última instrução mov, onde é suposto carregar a temp de volta ao endereço, isso não acontece. O registrador EAX tem o endereço inicial da matriz que contém minha lista de valores

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

e o próximo endereço contém mais alguns números. Em decimal, os números são10 -20 5 12 30 -5 -22 55 52 0. Essencialmente agora eu estou tentando me moverFFFFFFEC para0000000A e depois mova0000000A paraFFFFFFEC. Eu posso armazená-lo em meu registro temporário EDX, mas não posso armazenar o valor de EDX no endereço específico. Qualquer ajuda?

questionAnswers(2)

yourAnswerToTheQuestion