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