Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2017, 10:24   #1
Microsxema
Новичок
Джуниор
 
Регистрация: 05.06.2017
Сообщений: 1
По умолчанию Ассемблер переходы и условния

не компилится программа, не могу понять в чем дело, помогите)


Код:
 #include <cstdio>
	#include <iostream>
	#include <clocale>

using namespace std;
    int main()
    {
//1)На промежутке от 1 до 90*000. Подсчитать количество таких чисел X, что (Х+Х-1) - простое число. Ответ вывести на экран
    
          unsigned short int i = 2;
          unsigned short int E = 0;
          unsigned short int h = 1;
          unsigned short int smp = 0;
          unsigned short int s = 0;
          unsigned short int otv = 0;
        __asm
        {
            
        cikl1:
            
            mov eax, 0
            mov edx, 0
            mov bx, 1 //в bx лежит 1
            mov ax, i //в ax лежит i = 2
            add ax, i // 2 + 2 = 4
            
            sub ax, bx //вычитаю 4-1=3
            mov E, ax // перемещаю 3 в E
            // E = ( i + i - 1)
            
            mov eax, 0
            mov edx, 0
            mov edx, 0
            
        cikl2:
            
            //начло условие E%h == 0
            mov eax, 0
            mov edx, 0
            mov ax , E
            mov bx, h
            idiv bx // E / h  остаток от деления в dx
            
            cmp dx, 0 //  сравниваем если остаток от деления (dx) с 0
            je INCs //переход на метку INCs
            
        INCs:
             INC s // то smp++
             jmp cikl22
            //конец условне
   
        cikl22:
            
            cmp h, E // если h == E
            je cikl11 // перехожу
            
            INC h //h++
            // конец цикла h
            jmp cikl2
            
        cikl11:
            
            cmp s, 2 //если s == 2
            je IF11 //то
            mov s, 0 //иначе s = 0
            jmp cikl111
            
        IF11:
            INC smp // то smp++
            mov s, 0 // s = 0
            jmp cikl111
            
        cikl111:
            cmp i, 90000
            je en
            INC i // i++
            jmp cikl1
            
        en:
            mov otv, smp
            
            //конец цикла 2
     
        }
        printf("%d\n", E);
         printf("%d\n", i);
    }

вот та же программа на Си
Код:

//1) На промежутке от 1 до 90*000. Подсчитать количество таких чисел X, что (Х+Х-1) - простое число. Ответ вывести на экран.
#include <stdio.h>

int main()
{
    int s = 0;
    int spm = 0;
    int E = 0;
    for(int i = 2; i <= 90000; i++) //цикл 1  metka 1
    {
        E = ( i + i - 1);
      for( int h = 1; h <= E; h++ ) // цикл 2
      {
       
        
          if ( E%h == 0) { s++; }
      } //конец цикла

        if (s == 2)
        {
            spm++;
            s = 0;
        }
        
        else s = 0;
        
    }
     printf(" smp = %d\n", spm);
}
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 05.06.2017 в 10:30.
Microsxema вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
переходы в OpenOffice IliaIT Общие вопросы Delphi 2 14.11.2016 13:55
Переходы Руско Microsoft Office Access 0 02.01.2014 10:15
Условные переходы (if) 803 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 05.05.2013 17:51
Переходы в галерее Elefanter WordPress и другие CMS 2 08.06.2010 21:22
ассемблер условные переходы серг Помощь студентам 0 15.04.2010 19:25