Я не очень понимаю, почему отнимается 4 и умножается на 4, почему это число, насчёт pushad, я ведь правильно понимаю, что он помещает в стек значения РОН, то есть адрес массива в esi, и в ecx размер массива?
Procedure Bubble(var A: array of Integer; M: Integer);
Asm
pushad
dec ecx
mov esi, 1
@1:
mov edi, ecx
mov edx, [eax+edi*4]
@2:
mov ebx, [eax+edi*4-4]
cmp ebx, edx
ja @3
mov [eax+edi*4-4], edx
mov [eax+edi*4], ebx
jmp @4
@3:
mov edx, ebx
@4:
dec edi
cmp edi, esi
jnl @2
inc esi
cmp esi, ecx
jle @1
popad
End;
И как можно переделать это без процедуры, а чтоб просто использовать в основной программе