Я хотел бы попросить о помощи!
Код C
void bubble_sort(int a[], int n) {
int i = 0, j = 0, tmp;
for (i = 0; i < n; i++) {
for (j = 0; j < n - i - 1; j++)
if (a[j] > a[j + 1]) {
tmp = a[j];
a[j] = a[j + 1];
a[j + 1] = tmp;
}
}
}
}
Мой код сборки до сих пор от основной части:
main:
push ebp //func prologue
mov ebp, esp
mov esi, [ebp + 8] // array address
mov edi, [ebp + 12] //array length
mov eax, 0 //i
mov ecx, 0 //j
outerloop:
inc eax // i++
cmp eax, edi // comparing i with length
jge end
insideloop:
mov edx, edi
sub edx, eax
dec edx
inc ecx
cmp ecx, edx
je outerloop
comparison:
Я потерялся в этой части сравнения, вчера я исследовал, как бы я это сделал, но я просто не понимаю, как бы я сделал эту часть:
if (a[j] > a[j + 1]) {
tmp = a[j];
Я действительно смущен тем, как я перемещаю свое значение j в массив, затем проверяю, каждый раз ли [j] выше, чем a [j +1], а затем перемещаю [j] в tmp, любая помощь или советы оценил, спасибо!
tmp = a[j];
из телаif
, чтобы у вас было значение в регистре, которое вы можете сравнить с ячейкой памяти. - person Peter Cordes   schedule 05.05.2019