32位装配 - 插入排序无法正常工作

时间:2014-12-06 16:52:48

标签: arrays sorting assembly insertion-sort

我的任务是添加一个代码,用插入排序对数组进行排序。 'printf'函数打印一个字符串 printArray打印数组

由于某种原因,数组没有排序,我找不到原因。 将不胜感激。

main:
        push MSG    ; print welcome message
        call printf
        add esp,4   ; clean the stack 

        call printArray ;print the unsorted array

        ;;;;;;;;;;add code here;;;;;;;;;;

        mov eax,1
loop1:
        mov ebx, array
        add ebx, eax

loop2:
        mov esi, ebx
        dec esi
        mov esi, [esi]      ;esi holds the value before what ebx points to
        cmp [ebx], esi
        ja endLoop2

        mov edx, esi
        mov esi, ebx
        dec esi
        mov ecx, [ebx]
        mov [esi], ecx
        mov [ebx], edx
        dec ebx
        cmp ebx, array
        ja loop2

endLoop2:
        inc eax
        cmp eax, 11
        jbe loop1

        ;;;;;;;end of your code;;;;;;;;;;;;;;

        call printArray

        mov eax, 1  ;exit system call
        int 0x80

1 个答案:

答案 0 :(得分:0)

如果您的数组中包含1个字节的值,请在加载和存储到内存时使用movb而不是mov