Почему не обмениваются переменные? - 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

Объяснение кода листинга программы

  1. esi получает значение a
  2. edi получает значение b
  3. eax получает значение по адресу esi (т.е. a)
  4. eax и eax обмениваются значениями
  5. eax записывается по адресу esi (т.е. a)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.538 из 5
Похожие ответы