当我尝试通过使用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
}
}