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進数では、数字は10 -20 5 12 30 -5 -22 55 52 0
です。基本的に今、私はに移動してからに移動しようとしFFFFFFEC
て0000000A
い0000000A
ますFFFFFFEC
。一時レジスタEDXに保存できますが、EDXの値を特定のアドレスに保存できません。何か助けはありますか?