Почему не обмениваются переменные? - 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
получает значениеa
edi
получает значениеb
eax
получает значение по адресуesi
(т.е.a
)eax
иeax
обмениваются значениямиeax
записывается по адресуesi
(т.е.a
)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д