Вычислить значение выражения в ассемблерной вставке в C++ - Assembler

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

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

посчитать a*b/c ассемблерная вставка к с++ на VS 2013. Переменные типа unsigned short, действия, как я понимаю с регистрами AX,BX... но нужно как-то учесть возможное переполнение при умножении и следующем делении

Решение задачи: «Вычислить значение выражения в ассемблерной вставке в C++»

textual
Листинг программы
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. void main()
  5. {
  6. unsigned short a,b,c;
  7. unsigned int R;
  8.  
  9. cout<<"a="; cin>>a;
  10. cout<<"b="; cin>>b;
  11. cout<<"c="; cin>>c;
  12. asm
  13.  {
  14.  movzx eax,a
  15.  movzx ebx,b
  16.  movzx ecx,c
  17.  mul ebx
  18.  div ecx
  19.  mov R,eax
  20.  }
  21. cout<<"R="<<R<<endl;
  22. system("pause");
  23. }

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

  1. В коде присутствует вставка ассемблерного кода, который выполняет следующие действия:
    • Перемещает значение переменной a в регистр eax
    • Перемещает значение переменной b в регистр ebx
    • Перемещает значение переменной c в регистр ecx
    • Выполняет операцию умножения с использованием регистра ebx и ecx
    • Выполняет операцию деления с использованием регистра ecx
    • Сохраняет результат в регистре eax
    • Сохраняет значение регистра eax в переменной R
  2. Значение переменной R выводится на экран с помощью cout
  3. Программа ожидает нажатия клавиши для продолжения работы с помощью system(pause)

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


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

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

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

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

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

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