为什么我的Bubble Sort无法用于内联装配?

时间:2018-12-07 05:32:27

标签: assembly visual-c++ x86 masm inline-assembly

当我尝试通过使用numbers []作为数组并使用MAX作为数组的大小来使气泡排序正常工作时。

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
    }
}

0 个答案:

没有答案