Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
2 / 2 / 0
Регистрация: 01.10.2016
Сообщений: 63
1

Ассемблерная вставка

02.03.2017, 11:06. Показов 2625. Ответов 9
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <cstdlib>
using namespace std; 
int main() {
    int x, y; 
    cout << "Vvedite znachenie x, y: " ; 
    cin >> x >> y; 
        _asm {
        mas dd 0, 1, 2, 3
        mov esi, 0
        mov eax, mas[esi]
        mov x, eax
    }
    cout << "E(|Ai| * |Bi|) * X - E(|Ci|) * Y = " << x; 
    system ("pause"); 
    return 0; 
}
Выводится значение x, которое ввёл пользователь, хотя должен выводиться 0. Как обращаться к элементам массива в ассемблере?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.03.2017, 11:06
Ответы с готовыми решениями:

Ассемблерная Вставка
Добрый день. начал изучать ассемблер(начал со вставок, на этом основание пишу здесь). Должен был...

Ассемблерная Вставка
Помогите, пожалуйста! Задано массив из 4 байт. Рассматривая его, как массив из 32 бит посчитать...

Ассемблерная вставка
Доброго времени суток, пытаюсь пытаюсь узнать поддерживает ли мой процессор тепловые сенсоры код не...

Ассемблерная вставка в c++
Как данный код написать между вставками __asm {} в c++??? Поскольку dw, db и тд не поддерживаются в...

9
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
02.03.2017, 11:22 2
Массив объяви обычным способом.
1
2 / 2 / 0
Регистрация: 01.10.2016
Сообщений: 63
02.03.2017, 12:48  [ТС] 3
Как это сделать?
0
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
02.03.2017, 12:49 4
C++
1
int x, y, mas[4] = {0, 1, 2, 3};
1
2 / 2 / 0
Регистрация: 01.10.2016
Сообщений: 63
02.03.2017, 12:53  [ТС] 5
По условию, массив должен быть объявлен и инициализирован в ассемблере.
0
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
02.03.2017, 13:01 6
Ты уверен, что во вставке это допустимо? Ну по крайней мере jmp нужен перед ним.
1
1715 / 606 / 187
Регистрация: 12.03.2016
Сообщений: 2,191
02.03.2017, 13:02 7
Лучший ответ Сообщение было отмечено Букер как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdafx.h"
#include <iostream>
 
int main()
{
    int mas[4] = { 11,12,13,14};
    
    int x, y;
    std::cout << "Vvedite znachenie x, y: ";
    std::cin >> x >> y;
    
    _asm
    {
        lea esi, mas
        mov esi, 0
        mov eax, mas[esi]
        mov x, eax
    }
    std::cout << "E(|Ai| * |Bi|) * X - E(|Ci|) * Y = " << x << std::endl;
    system("pause");
    return 0;
}
не прочитал вышеизложенное
1
2 / 2 / 0
Регистрация: 01.10.2016
Сообщений: 63
02.03.2017, 13:23  [ТС] 8
Возможно, массив можно создать в C++.
Условие задачи следующее:
- Реализуйте вычисление заданного выражения как ассемблерную вставку в программе на языке C++.
- Программа на C++ должна запрашивать значения переменных и выводить результат на экран.
- Все переменные (X, Y) являются целочисленными.
- A, B, C – массивы.
- Если у массива указан один индекс, значит он одномерный, если два – двумерный.
Попробую создать массив в C++ и обрабатывать его в ассемблере.
Благодарю всех за помощь.
0
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
02.03.2017, 13:36 9
И для чего 14-я строка, если регистр сразу же перезаписан?
0
1715 / 606 / 187
Регистрация: 12.03.2016
Сообщений: 2,191
02.03.2017, 14:00 10
nmcf, больше как образец для ТС для дальнейшей работы. Сразу выложил бы задание проще было бы.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.03.2017, 14:00

Ассемблерная вставка в с++
С помощью логических операций реализуйте запись битов в данной ячейки памяти, размером в 2 байта, в...

Ассемблерная вставка на С++
Добрый день, уважаемые. Столкнулся с большой проблемой когда понадобилось для увеличения скорости...

Ассемблерная вставка в С++
Когда в b у нас число больше 127 программа работает неправильно помогите исправить .. очень нужно...

Ассемблерная вставка
Нужно заменить в русской строке похожие буквы латиницей. Ввод и вывод - на С++, всё остальное - на...


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

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

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