Burbuja de montaje tipo swap

Estoy intentando hacer una clasificación de burbuja en el ensamblaje x86 (sí, tiene que ser una burbuja, ya que no me preocupa la optimización de la velocidad con respecto a diferentes tipos de clases) y, por alguna razón, mi código no intercambiará los valores necesarios. Aqui esta mi codigo

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

En la última instrucción de movimiento donde se supone que debe cargar la temperatura de nuevo en la dirección, no ... no lo hace. El registro EAX tiene la dirección de inicio de la matriz que contiene mi 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

y la siguiente dirección contiene algunos números más. En decimal, los números son10 -20 5 12 30 -5 -22 55 52 0. Esencialmente en este momento estoy tratando de movermeFFFFFFEC a0000000A y luego mover0000000A aFFFFFFEC. Puedo almacenarlo en mi registro temporal EDX, pero no puedo almacenar el valor de EDX en la dirección específica. ¿Alguna ayuda?

Respuestas a la pregunta(2)

Su respuesta a la pregunta