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

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

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

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

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

textual
Листинг программы
#include <iostream>
using namespace std;
 
void main()
{
unsigned short a,b,c;
unsigned int R;
 
cout<<"a="; cin>>a;
cout<<"b="; cin>>b;
cout<<"c="; cin>>c;
asm
 {
 movzx eax,a
 movzx ebx,b
 movzx ecx,c
 mul ebx
 div ecx
 mov R,eax
 }
cout<<"R="<<R<<endl;
system("pause");
}

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

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

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


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

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

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