![]() |
#2
赖卓成2019-05-30 18:03
|

#include<stdio.h>
int main()
{
int i;
int a[]={5,-8,9,4,1};
int *sort(int *p);
for(i=0;i<=4;i++)
{
printf("\t%d",sort(a));
}
printf("\n");
return 0;
}
int *sort(int *p)
{
int n=5;
_asm
{
lea ebx,p
mov ecx,n
dec ecx
loop1: mov edx,ecx
mov esi,0
loop2: mov eax,[ebx+esi]
cmp eax,[ebx+esi+4]
jge next
xchg eax,[ebx+esi+4]
mov [ebx+esi],eax
next: add esi,4
loop loop2
mov ecx,edx
loop loop1
}
return p;
}
int main()
{
int i;
int a[]={5,-8,9,4,1};
int *sort(int *p);
for(i=0;i<=4;i++)
{
printf("\t%d",sort(a));
}
printf("\n");
return 0;
}
int *sort(int *p)
{
int n=5;
_asm
{
lea ebx,p
mov ecx,n
dec ecx
loop1: mov edx,ecx
mov esi,0
loop2: mov eax,[ebx+esi]
cmp eax,[ebx+esi+4]
jge next
xchg eax,[ebx+esi+4]
mov [ebx+esi],eax
next: add esi,4
loop loop2
mov ecx,edx
loop loop1
}
return p;
}
汇编代码没有问题, 不使用函数的时候可以实现排序,但是要把排序写成函数 则出错,是数组传参出现问题了吗 还是怎么回事呢,各位帮忙看看 帮忙修改,谢谢