为了增加一些人气 我还是发到这里 不使用临时变量 完成 2 个整数的交换
程序代码:
void swap(int*,int*) { _asm { mov ebx,dword ptr [ebp+0xc]; //令ebx=参数2的地址(传址) mov edx,[ebx]; //令edx=参数2的值(传值) push edx; //因为不使用临时变量 所以寄存器不够用 //因为下面要改变这个址和值 所以这3条语句起到一个备份的作用 mov ecx,dword ptr [ebp+0x8]; //ecx=参数1的地址 mov eax,[ecx]; //eax=参数1的值 mov edx,dword ptr [ebp+0xc]; //edx=参数2的地址 mov [edx],eax; //edx的指向值由eax代替 完成交换第一步 pop edx; //取出edx即参数2的值 mov ecx,dword ptr [ebp+0x8]; //ecx=参数1的地址 mov [ecx],edx; //ecx的指向值由edx代替 完成交换第二步 } }