Hi
your code compiles fine on my win7/x64/vs2010 system, but it crashes and I think this is because you are using indirections on registers which aren't loaded with proper addresses.
I brought the example to life by initializing with
Init:
__asm
{
lea EAX, arr
lea EBX, temp_arr
mov ECX, ARRAYSIZE
call Merge_Sort
jmp finish
}
right after the initial for loop which fills the array with random numbers,
then replacing all occurences of
mov <reg>, <c-array-name></c-array-name></reg>
with
lea <reg>, <c-array-name></c-array-name></reg>
and finally adding a
finish:
label right before
return 0;
}