Определить принадлежность числа к классу простых чисел (С++/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: }
Объяснение кода листинга программы
- Переменная
num
используется для хранения числа, которое необходимо проверить на простоту. - Код на ассемблере выполняет следующие действия:
- Переменная
esi
используется в качестве указателя на переменнуюnum
. - Переменная
ebx
инициализируется значением 1. - Начинается цикл, который будет выполняться до тех пор, пока значение переменной
ebx
не станет больше или равно значению переменнойnum
. - Внутри цикла переменная
eax
используется в качестве временной переменной. - Переменная
edx
инициализируется значением 0. - Выполняется деление переменной
eax
на переменнуюebx
. - Результат деления сохраняется в переменной
edx
. - Если значение переменной
edx
не равно 0, то цикл продолжается. - Если значение переменной
edx
равно 0, то число простое и выполняется переход к меткеsimple
. - Если значение переменной
ebx
становится равным значению переменнойnum
, то выполняется переход к меткеdone
. - Если число простое, то выполняется переход к метке
done
.
- Переменная
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д