Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
maksdm
0 / 0 / 0
Регистрация: 30.03.2016
Сообщений: 14
1

MS Visual C++ + asm: определить принадлежность числа к классу простых чисел

08.05.2016, 14:16. Просмотров 389. Ответов 7
Метки нет (Все метки)

Определить принадлежность числа к классу простых чисел (С++/asm)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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:
}
как полностью написать код всей программы?
не могу понять
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2016, 14:16
Ответы с готовыми решениями:

Определить принадлежность числа к классу простых чисел (С++/asm)
Привет всем форумчанам. Необходимы ваши ясные умы, дабы реализовать кое-что, а...

Определить, принадлежит ли 4b2c1b8c5c2e8a3ef3555fb48efbac52ac к классу простых чисел
Добрый день, форумчане. Поступил я в университет, начал учить С++ Начались...

Как на этапе компиляции определить принадлежность к классу?
Есть шаблонный класс, который в зависимости от переданного класса в параметре...

Определить количество простых чисел в интервале от N до M где N,M-натуальные числа
Определить количество простых чисел в интервале отN до M где N,M-натуальные...

Проверка на принадлежность некоторому классу
Здравствуйте! Как реализовать проверку объекта на принадлежность некоторому...

7
R71MT
5309 / 1470 / 313
Регистрация: 29.07.2014
Сообщений: 2,513
Записей в блоге: 5
08.05.2016, 21:49 2
maksdm, у тебя в NUM сколько чисел?
0
maksdm
0 / 0 / 0
Регистрация: 30.03.2016
Сообщений: 14
10.05.2016, 15:42  [ТС] 3
число должно вводиться , как я понял.
0
maksdm
0 / 0 / 0
Регистрация: 30.03.2016
Сообщений: 14
10.05.2016, 19:45  [ТС] 4
Определить принадлежность числа к классу простых чисел

__________________________________________________________

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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:
}
------------------------------------------------------------------

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#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");
}
0
R71MT
5309 / 1470 / 313
Регистрация: 29.07.2014
Сообщений: 2,513
Записей в блоге: 5
11.05.2016, 10:20 5
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
org 100h
jmp start
 
mes0   db  13,10,'Type digit: $'
mes1   db  13,10,'Simple! $'
mes2   db  13,10,'Component! $'
 
num    dw  0               ;
N      dw  0               ;
 
start:                     ;
     mov   ah,9            ;
     mov   dx,mes0         ;
     int   21h             ;
     mov   ah,1            ;
     int   21h             ;
     and   ax,0fh          ;
     mov   [num],ax        ;
 
     mov   si,num          ;
     mov   bx,1            ;
@L:  inc   bx              ;
     mov   ax,[si]         ;
     xor   dx,dx           ;
     div   bx              ;
     or    dx,dx           ;
     jnz   @L              ;
 
     cmp   bx,[num]        ;
     jz    ok              ;
     inc   [N]             ;
     mov   dx,mes2         ;
     jmp   pri             ;
ok:  mov   dx,mes1         ;
pri: mov   ah,9            ;
     int   21h             ;
 
exit:                      ;
     xor   ax,ax           ;
     int   16h             ;
     int   20h             ;
1
Mikl___
Автор FAQ
13304 / 6377 / 629
Регистрация: 11.11.2010
Сообщений: 11,537
12.05.2016, 08:29 6
maksdm,
для вычисления является ли введенное http://www.cyberforum.ru/cgi-bin/latex.cgi?N простым числом нужно помнить, что:
  1. делитель не может быть большеhttp://www.cyberforum.ru/cgi-bin/latex.cgi?\sqrt{N}
  2. делитель всегда НЕЧЕТНОЕ число поэтому нужно строку inc bx заменить на add bx,2
1
maksdm
0 / 0 / 0
Регистрация: 30.03.2016
Сообщений: 14
13.05.2016, 19:04  [ТС] 7
как будет выглядеть полностью этот код
0
R71MT
5309 / 1470 / 313
Регистрация: 29.07.2014
Сообщений: 2,513
Записей в блоге: 5
13.05.2016, 19:35 8
..это и есть готовый код на FASM'e.
Скачай фасм, скопируй в его окно этот код и нажми [F9].
0
13.05.2016, 19:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2016, 19:35

Принадлежность всех P задач классу PSpace
Как доказать, что любая задача, которая принадлежит P классу принадлежит и...

Как проверить принадлежность функции к классу линейных функций?
Определить к каким классам (константы нуля, константы единицы, самодвойственных...

Как сделать так, что бы не писать постоянно принадлежность к классу?
Object.h #pragma once class Object { private: float x,y,z; public:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru