Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Anette666k
0 / 0 / 5
Регистрация: 10.06.2015
Сообщений: 136
#1

Синтаксическая ошибка во встроенном коде на языке ассемблера в "код операции" - C++

23.08.2016, 14:05. Просмотров 666. Ответов 2
Метки нет (Все метки)

visual studio 2013 выдал такую ошибку
error C2400: синтаксическая ошибка во встроенном коде на языке ассемблера в "код операции"; обнаружено "newline, что это за ошибка?

КОД

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
#include "stdafx.h"
#include <iostream>
using namespace std;
void main()
{
int z, x, y = 0; //Объявляем переменные x, y, z
cout << "x = ";
cin >> x;         //Считываем значение в переменную x
cout << "y = ";
cin >> y;         //Считываем значение в переменную y
_asm
 
{
xor EAX, EAX //обнуляем регистр EAX
xor EBX, EBX //обнуляем регистр EBX 
xor ECX, ECX //обнуляем регистр ECX 
mov EAX, x   //EAX = x
mov EBX, y   //EBX = y
cmp EAX,EBX  //сравниваем x и y
jl m       //Если x<y, то переходим на метку m 
jg b       //Если x>y, то переходим на метку b je  
ex       //Если x=y, то ничего не делаем
m:
mov EAX, x   //EAX = x
mul EAX      //EAX = x*x
mov ECX,EAX  //ECX = EAX = x*x
mov EAX, x   //EAX = x
mov EBX, 2   //EBX = 2
mul EBX      //EAX = EAX*EBX = 2*x
sub ECX, EAX //ECX = ECX - EAX = x*x - 2*x
mov z,ECX    //Записываем результат в z
jmp ex       //Прыгаем на метку ex
b:
mov EAX, y   //EAX = y
mul EAX      //EAX = y*y
mov z, EAX   //Записываем результат в z
ex:
}
cout << "z = " << z << endl; //Выводим результат на экран
system("pause"); 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2016, 14:05
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Синтаксическая ошибка во встроенном коде на языке ассемблера в "код операции" (C++):

Error C2400: синтаксическая ошибка во встроенном коде на языке ассемблера в "код операции"; обнаружено "SHL"
visual studio выдал такую ошибку error C2400: синтаксическая ошибка во...

For(auto const& val : stime) .cpp(47) : error C2143: синтаксическая ошибка: отсутствие "," перед ":"
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdexcept&gt; #include...

error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "fprot"
помогите, пожалуйсти исправить ошибки!!! #include &lt;iostream&gt; #include...

Error C2143: синтаксическая ошибка: отсутствие ";" перед "строка"
#include &lt;stdafx.h&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include...

error C2143: синтаксическая ошибка: отсутствие "]" перед ";"
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cmath&gt; using namespace std;...

Error C2143: синтаксическая ошибка: отсутствие ";" перед "<<"
Программа Microsoft Visual C++ 2010 // площадь прямоугольника.cpp: главный...

2
MansMI
1447 / 1156 / 549
Регистрация: 08.01.2012
Сообщений: 4,509
23.08.2016, 15:17 #2
Цитата Сообщение от Anette666k Посмотреть сообщение
jg b //Если x>y, то переходим на метку b je
ex //Если x=y, то ничего не делаем
все нормально?
0
gru74ik
Модератор
Эксперт CЭксперт С++
4647 / 1961 / 292
Регистрация: 20.02.2013
Сообщений: 5,219
Записей в блоге: 23
23.08.2016, 15:28 #3
ASM-фрагмент с подсветкой синтаксиса
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
_asm
 
{
    xor EAX, EAX //обнуляем регистр EAX
    xor EBX, EBX //обнуляем регистр EBX 
    xor ECX, ECX //обнуляем регистр ECX 
    mov EAX, x   //EAX = x
    mov EBX, y   //EBX = y
    cmp EAX,EBX  //сравниваем x и y
    jl m       //Если x<y, то переходим на метку m 
    jg b       //Если x>y, то переходим на метку b je  
    ex       //Если x=y, то ничего не делаем
    m:
    mov EAX, x   //EAX = x
    mul EAX      //EAX = x*x
    mov ECX,EAX  //ECX = EAX = x*x
    mov EAX, x   //EAX = x
    mov EBX, 2   //EBX = 2
    mul EBX      //EAX = EAX*EBX = 2*x
    sub ECX, EAX //ECX = ECX - EAX = x*x - 2*x
    mov z,ECX    //Записываем результат в z
    jmp ex       //Прыгаем на метку ex
    b:
    mov EAX, y   //EAX = y
    mul EAX      //EAX = y*y
    mov z, EAX   //Записываем результат в z
    ex:
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2016, 15:28
Привет! Вот еще темы с решениями:

error C2143: синтаксическая ошибка: отсутствие ";" перед "using"
Сколько смотрю в код, не могу найти где я ошибку совершил, возможно вы...

Error C2143: синтаксическая ошибка: отсутствие ";" перед "*"
Вот текст класса, где собственно говоря вылезает ошибка. Где я мог пропустить...

Синтаксическая ошибка: отсутствие ";" перед "<class-head>"
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; int _tmain(int...

Синтаксическая ошибка: отсутствие ";" перед "using namespace"
У меня есть заголовочный файл LanguageEng.h В нём находится код: #pragma once...


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

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

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