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

А коде происходит либо зацикливание, либо переполнение

24.10.2015, 14:29. Просмотров 192. Ответов 0
Метки нет (Все метки)

у меня код получился такой, как быть чтобы найти 200ую пару. у меня происходит либо зацикливание, либо переполнение. (делал с асм вставкой на си)
C++
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
42
43
44
45
46
#include <iostream>
#include <conio.h>
 
int main()
{
    unsigned __int32 x = 1;
    unsigned __int32 k = 0;
    for (int i = 2; i < 90001; i++)
    {
        if (fmod(i + i - 2, 3) == 0)
        {
            k++;
            if (k == 200)
                std::cout << "200 napa " << i << std::endl;
        }
    }
    std::cout << "(x+x-2) mod 3 = " << k << std::endl;
    k = 0;
    x = 1;
    __int16 e = 0;
    __asm
    {
        mov BX, 3;
    m1:
        inc x;
 
        mov dx, word ptr x + 2;
        mov AX, word ptr x + 0;// dx:ax = x;
        add ax, word ptr x + 0;
        adc dx, word ptr x + 2;
        sub AX, 2;
        sbb dx, 0;
        div BX;
        mov e, ax;
        cmp DX, 0; //мод 3
        jne m;
        inc k;
    m:
        cmp dword ptr x, 90000;
        jne m1;
        //===========================
    }
    std::cout << "asm k = " << k << std::endl;
    std::cout << "asm 200 napa = " << e;
    _getch();
}
Добавлено через 2 минуты
и еще вопрос, как сделать так чтобы он считал до 100 000 (ста тысяч) когда он еще раз прокручивает происходит переполнение и программы выбрасывает (100 000 + 100 000)

Добавлено через 41 минуту
я сократил (так будет лучше)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
__asm
    {
        mov BX, 3;
    m1:
        inc x;
        //======body=========
        mov dx, word ptr x + 2;
        mov AX, word ptr x + 0;
        sub AX, 1;
        sbb dx, 0;
        div BX;
        mov e, ax;
        //====================
        cmp DX, 0; //мод 3
        jne m;
        inc k;
    m:
        cmp dword ptr x, 100000;
        jne m1;
        
    }
Добавлено через 48 минут
C++
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <conio.h>
 
int main()
{
    unsigned __int32 x = 1;
    unsigned __int32 k = 0;
    for (int i = 2; i < 100001; i++)
    {
        if (fmod(i-1, 3) == 0)
        {
            k++;
            if (k == 200)
                std::cout << " cpp 200 napa " << i << std::endl;
        }
    }
    std::cout << "cpp (x+x-2) mod 3 = " << k << std::endl;
    k = 0;
    x = 1;
    unsigned __int32 e = 0;
    __asm
    {
        mov BX, 3;
    m1:
        inc x;
        //======body=========
        mov dx, word ptr x + 2;
        mov AX, word ptr x + 0;
        sub AX, 1;
        sbb dx, 0;
        div BX;
        //mov e, ax;
        //====================
        cmp DX, 0; //мод 3
        jne m;
        inc k;
 
        cmp k, 200;
        jg m; //если к меньше то идем дальше если больше то прыгаем на м
        //==============
        mov dx, word ptr x + 2;
        mov AX, word ptr x + 0;
        mov word ptr e + 2, dx;
        mov word ptr e, ax;
        //==============
    
    m:
        cmp dword ptr x, 100000;
        jne m1;
    
    } 
 
    std::cout << "asm k = " << k << std::endl;
    std::cout << "asm 200 napa = " << e;
        _getch();
}
закройте тему
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2015, 14:29
Ответы с готовыми решениями:

Выполнение чего-либо без call
Только начал изучать ассемблер, поэтому такие глупые вопросы. Собственно, я думал, что можно...

Выполните выборку из строки слов, начинающихся с какого-либо, определенного символа
Здравствуйте, не могу понять суть задачи : &quot;Выполните выборку из строки слов, начинающихся с...

Как вывести текст на экран при нажатии какой либо клавиши?
Всем привет, поискал на форумах свою проблему- не нашел, потому пишу свой первый пост Только...

Что происходит с флагом переноса в приведенном коде
Добрый день. Возник вопрос: Что происходит с флагом переноса в такой ситуации? mov al,ff mov...

переключить монитор компьютера в "спящий" режим до нажатия какой-либо клавиши на клавиатуре
Народ, пожалуйста, помогите, если не сложно, очень надо!!! Препод задал вот такую задачу ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2015, 14:29

Найти в коде, где происходит реакция на нажатие клавиши Alt
Привет народ, есть дизасемблированная ехе программа, мне надо найти в коде asm где происходит...

Как происходит происходит простейший вывод сообщения в консоль в MASM
Простите за нубство. Начал читать книгу Калашникова и там в первейшей программе такой код: CSEG...

При изменении каких либо данных программа либо вылетает, либо просто не изменяет данные
Добрый вечер. Только недавно начал заниматься С++. И вот возникли проблемы. При изменении каких...


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

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

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