0 / 0 / 0
Регистрация: 08.06.2016
Сообщений: 5
1

Не работает код в Вижуал студии

08.09.2016, 01:26. Показов 529. Ответов 2
Метки нет (Все метки)

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include <stdio.h>
#include <locale.h>
#define A 12
#define B 13
long int a, b, left, right, left_a, right_a, a1, b1, err;
int main()
 
{
    setlocale(LC_ALL, "rus");
    for (;;) {
        printf ("\n\tПроверить тождество (a-b)*(a-b)*(a-b)*(a-b)=(a*a*a*a)-(4*(a*a*a)*b)+(6*(a*a)*(b*b))-(4*a*(b*b*b))+(b*b*b*b);
        printf ("\nВведите а: ");
        scanf_s("%li", &a);
        printf("Введите b: ");
        scanf_s("%li", &b);
        //================================ C==================================
        a1 = a / A;
        b1 = b / B;
        left = (a - b)*(a - b)*(a - b)*(a - b);
        right = (a*a*a*a) - (4 * (a*a*a)*b) + (6 * (a*a)*(b*b)) - (4 * a*(b*b*b)) + (b*b*b*b);
        //============================ Assembler =============================
        __asm {
            // Вычислить левую часть тождества
            //Нет ошибок
            mov err, 0
            //(a - b)*(a - b)
            mov         eax, a
            mov         ebx, A
            cdq
            idiv            ebx
            mov         ecx, eax
            imul            ecx
            imul            ecx
            jo          Er
            mov         esi, eax
            //(a - b)*(a - b)
            mov         eax, b
            mov         ebx, B
            cdq
            idiv            ebx
            mov         edi, eax
            imul            edi
            imul            edi
            jo          Er
            jmp         Cont
            //(a - b)*(a - b)
            Er :
            mov         err, 1
                Cont :
                sub         esi, eax
                mov         left_a, esi
                // Вычислить правую часть тождества
                //a1*a1
                mov         eax, a
                mov          ebx, A
                cdq
                idiv            ebx
                mov          ecx, eax
                mul         eax
                mov         esi, eax
                //b1*b1
                mov         eax, b
                mov         ebx, B
                cdq
                idiv             ebx
                mov         edi, eax
                imul            eax
                add         esi, eax
                //a1*b1
                mov          eax, edi
                imul             ecx
                add          eax, esi
                mov         right_a, eax
                //a1-b1
                mov         eax, a
                mov         ebx, A
                cdq
                idiv            ebx
                mov         esi, eax
                mov         eax, b
                mov         ebx, B
                cdq
                idiv            ebx
                sub         esi, eax
 
                mov         eax, esi
                imul            right_a
                jo          Err
                jmp         Cont1
                Err :
            mov err, 1
                Cont1 :
                mov         right_a, eax
        }
        // Вывод результатов
        printf("\nЛевая часть тождества ( C ): %li", left);
        printf("\nПравая часть тождества( С ): %li", right);
        if (!err) {
            printf("\nЛевая часть тождества (Asm): %li", left_a);
            printf("\nПравая часть тождества(Asm): %li\n", right_a);
        }
        else {
            printf("\nЛевая часть тождества (Asm): Переполнение!");
            printf("\nПравая часть тождества(Asm): Переполнение!");
        }
    }
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.09.2016, 01:26
Ответы с готовыми решениями:

Программа не работает в Вижуал студии (2010)
#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include...

графический режим в вижуал студии 2010 с++
нужно в Console Aplication с++ нарисовать граф но после поисков в интернете, понял что библиотеку...

Прога вылетает в вижуал студии , как исправить?
#include &lt;stdio.h&gt; #include &lt;locale.h&gt; int main() { setlocale(LC_ALL, &quot;rus&quot;); float x1, x2,...

Выбор видеокарты при разработке в вижуал студии
Добрый день! При запуске OpenGL проектов в VisualStudio, по умалочанию запускается встроенная...

2
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11647 / 7159 / 1700
Регистрация: 25.07.2009
Сообщений: 13,116
08.09.2016, 02:08 2
Roman19972016, как минимум, в 11 строке закрывающая " пропущена.
0
Заблокирован
08.09.2016, 08:11 3
если исправить указанное в #2, то:
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
        __asm 
        {   // Вычислить левую часть тождества
            mov dword ptr err,1
            mov eax, a
            sub eax,b
            imul eax
            jo _Err 
            imul eax
            jo _Err
            mov left_a, eax
            // Вычислить правую часть тождества
            mov eax,a
            imul eax
            jo _Err
            imul eax 
            jo _Err
            mov ecx,eax //a^4
            idiv dword ptr a
            imul dword ptr b
            jo _Err
            mov ebx,-4
            imul ebx //-4*a^3*b
            jo _Err
            add ecx,eax //a^4-4*a^3*b
            mov eax,a
            imul eax
            jo _Err
            imul dword ptr b
            jo _Err
            imul dword ptr b
            jo _Err
            mov ebx,6
            imul ebx //6*a^2*b^2
            add ecx,eax //a^4-4*a^3*b+6*a^2*b^2
            mov eax,b
            imul eax
            jo _Err
            imul dword ptr b
            jo _Err
            imul dword ptr a
            jo _Err
            mov ebx,-4
            imul ebx //-4*a*b^3
            jo _Err
            add ecx,eax //a^4-4*a^3*b+6*a^2*b^2-4*a*b^3
            mov eax,b
            imul eax
            jo _Err
            imul eax //b^4
            jo _Err
            add eax,ecx
            mov right_a,eax
            mov byte ptr err,0
            _Err:
        }
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.09.2016, 08:11
Помогаю со студенческими работами здесь

Код выполняемый из студии с пометкой debag, работает не так как уже компилированный код
Здравствуйте, столкнулся с такой проблемой. Код выполняемый из студии с пометкой debag, работает не...

код, который прекрасно выполняет Code::Blocks не выполняеться в Студии, как сделатьь так чтобы Студия воспринимала этот код??
Ребята, обьясните мне чего код, который прекрасно выполняет Code::Blocks не выполняеться в Студии,...

Для какой студии этот код?
Вот прога. Вроде для 2005, но не хочет ни компилить нормально, ни екзешник делать.. Если взять за...

Как включить дизасемблированный код в студии?
Во время отладки.


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru