程序集x86-比较数组值所需的帮助(冒泡排序)

时间:2019-05-04 15:44:29

标签: arrays assembly x86 i386

我想寻求帮助!

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,有什么帮助吗或提示,不胜感激,谢谢!

0 个答案:

没有答案