最近看了VC++使用内联汇编的文章,感觉不错,因此,修改而成,实现冒泡法排序之从小到大排序。
/* 使用内联汇编,从小到大排序。 */
#include <iostream>
using namespace std;
#define MAX_SIZE 20
int array[MAX_SIZE]={86,73,12,66,88,98,102,33,36,23,106,25,32,26,98,97,42,53,6,83};
void main()
{
int *p;
p = &array[0];
p--;
__asm
{
mov esi,p;
mov ecx,MAX_SIZE;
_LOOP1:
mov edx,ecx;
dec edx;
jz _EXIT;
_LOOP2:
mov eax,[esi+ecx*4];
mov ebx,[esi+edx*4]; //本身不需要比较
cmp eax,ebx;
jnb _NOCHG;
mov [esi+ecx*4],ebx;
mov [esi+edx*4],eax; //交换
_NOCHG:
dec edx;
jnz _LOOP2;
dec ecx;
jmp _LOOP1;
_EXIT:
}
cout<<"使用内联汇编,从小到大排序:"<<endl;
for(int i=0;i<MAX_SIZE;i