Определить принадлежность числа к классу простых чисел (С++/asm) - Assembler

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

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

Привет всем форумчанам. Необходимы ваши ясные умы, дабы реализовать кое-что, а именно необходимо реализовать программу, проверяющая является ли число простым на С++, причем сам алгоритм проверки необходимо осуществить ввиде ассемблерной вставки. Вот, я набросал наброски, однако ж ассемблерная вставка мне сложна. Помогите кто знает.
#include <iostream>
using namespace std;
 
void main()
{
  float num;//число
  int N = 0;//Число делителей
  setlocale(LC_ALL,"Rus");
  cout<<"Введите число:";
  cin>>num;
//Ассемблерная вставка
...
//********
  if (N==0)
  {
       cout<<"Число "<<num<<" является простым число!"<<endl;
  }else
  {
      cout<<"Число "<<num<<" не является простым числом!"<<endl;
  }
  system("pause");
}
Заранее спасибо за умные мысли.

Решение задачи: «Определить принадлежность числа к классу простых чисел (С++/asm)»

textual
Листинг программы
int num; !!!
//.............
_asm
{
lea esi,num
mov ebx,1
@L:
inc ebx
mov eax,[esi] 
xor edx,edx
div ebx
cmp edx,0
jne @L
cmp ebx,num
je  simple
    //пришли сюда если непростое
    jmp done    
simple:
    //сюда если число простое
done:
}

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

  1. Переменная num используется для хранения числа, которое необходимо проверить на простоту.
  2. Код на ассемблере выполняет следующие действия:
    • Переменная esi используется в качестве указателя на переменную num.
    • Переменная ebx инициализируется значением 1.
    • Начинается цикл, который будет выполняться до тех пор, пока значение переменной ebx не станет больше или равно значению переменной num.
    • Внутри цикла переменная eax используется в качестве временной переменной.
    • Переменная edx инициализируется значением 0.
    • Выполняется деление переменной eax на переменную ebx.
    • Результат деления сохраняется в переменной edx.
    • Если значение переменной edx не равно 0, то цикл продолжается.
    • Если значение переменной edx равно 0, то число простое и выполняется переход к метке simple.
    • Если значение переменной ebx становится равным значению переменной num, то выполняется переход к метке done.
    • Если число простое, то выполняется переход к метке done.

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


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

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

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