我想寻求帮助!
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值移入数组,然后每次检查a [j]是否大于a [j +1],然后将a [j]移入tmp,有什么帮助吗或提示,不胜感激,谢谢!