Почему не обмениваются переменные? - Assembler
Формулировка задачи:
Help
#include <iostream>
using namespace std;
void Swap(int &a, int &b)
{
_asm
{
mov eax, a
mov ebx, b
mov a, ebx
mov b, eax
}
}
int main()
{
int a = 2;
int b = 3;
cout << "a, b: " << a << ", " << b << endl;
Swap(a, b);
cout << "a, b: " << a << ", " << b << endl;
system("pause");
return 0;
}Решение задачи: «Почему не обмениваются переменные?»
textual
Листинг программы
mov esi,a mov edi,b mov eax,[esi] xchg eax,[edi] mov [esi],eax
Объяснение кода листинга программы
esiполучает значениеaediполучает значениеbeaxполучает значение по адресуesi(т.е.a)eaxиeaxобмениваются значениямиeaxзаписывается по адресуesi(т.е.a)