Почему моя Bubble Sort не работает для встроенной сборки? - PullRequest
0 голосов
/ 07 декабря 2018

Когда я пытаюсь заставить мою сортировку пузырьков работать, используя числа [] в качестве массива и МАКСИМАЛЬНЫЙ в качестве размера массива.

Мне кажется, что в xchg eax, [esi + 4] мне сообщают об ошибке, в которой говорится, что сгенерировано исключение.

Что не так?

extern "C" void bubble(int numbers[], int MAX) {


    int swap;

    _asm {
        push MAX
        push numbers

        push  ebp
        mov ebp, esp

        outerLoop :
        mov swap, 0
        mov   ecx, [ebp + 12]
        mov   esi, [ebp + 8]

        innerLoop :
        mov eax, [esi]
        cmp[esi + 4], eax
        jg nextStep
        xchg eax, [esi + 4]
        mov[esi], eax
        mov swap, 1

        nextStep:
        add esi, 4
        loop innerLoop

        cmp swap, 0
        jz loopEnd
        jnz outerLoop

        loopEnd :
        pop ebp


        add esp, 8
    }
}
...