Почему не обмениваются переменные? - Assembler

Узнай цену своей работы

Формулировка задачи:

Help
Листинг программы
  1. #include <iostream>
  2. using namespace std;
  3. void Swap(int &a, int &b)
  4. {
  5. _asm
  6. {
  7. mov eax, a
  8. mov ebx, b
  9. mov a, ebx
  10. mov b, eax
  11. }
  12. }
  13. int main()
  14. {
  15. int a = 2;
  16. int b = 3;
  17. cout << "a, b: " << a << ", " << b << endl;
  18. Swap(a, b);
  19. cout << "a, b: " << a << ", " << b << endl;
  20. system("pause");
  21. return 0;
  22. }

Решение задачи: «Почему не обмениваются переменные?»

textual
Листинг программы
  1. mov esi,a
  2. mov edi,b
  3. mov eax,[esi]
  4. xchg eax,[edi]
  5. mov [esi],eax

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

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

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


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

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

13   голосов , оценка 4.538 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы