Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/162: Рейтинг темы: голосов - 162, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 17.08.2012
Сообщений: 29

Ассемблерные вставки в C++

26.04.2013, 19:36. Показов 30278. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно сабж ...:
Имею следующий код :
C++
1
2
3
4
5
    short Carry = 2;
    unsigned short Mas[3];
    Mas[0] = 12;
    Mas[1] = 13;
    Mas[2] = 14;
Пытаюсь , в ассемблерной вставке , обратиться к первому элементу массива (не нулевому) ... Делаю так :
Assembler
1
2
3
4
    _asm{
        MOV AX,Mas+Carry;
        ADC [Mas], AX;
    }
Но , вылетает ошибка , во время работы программы ...В дизассамблере смотрю , и вижу :
Assembler
1
2
        MOV AX,Mas+Carry;
0041158C  mov         ax,word ptr [ebp+ebp-0Ch]
Как сделать , что бы работало все верно :?Заранее благодарю !!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.04.2013, 19:36
Ответы с готовыми решениями:

Ассемблерные вставки
Будут ли у меня проблемы, если я, поработав с регистрами, не восстановлю их после выхода из вставки? Если проблем не будет, то их не будет...

С++ + Ассемблерные вставки
Помогите с задачей:"Нахождение и отображение смежных групп цифр в числовой последовательности". Реализовано должно быть примерно так...

Ассемблерные вставки пример
помогите пожалуйста решить вот условие: y1 = 8 +|x|, если x<1 иначе y1 = 3, если x>=1 y2 = |a|*2, если x>=1 иначе ...

25
0 / 0 / 0
Регистрация: 17.08.2012
Сообщений: 29
27.04.2013, 16:47  [ТС]
Студворк — интернет-сервис помощи студентам
Ну , у меня все же еще вопрос остался ....Вот вы , мне привели пример - он работает , и при том как надо ... Но , здесь как видно , объявляются сразу все элементы массива ... А как быть , если , у меня ссылка на массив , а в каком либо конструкторе класса , я выделяю память под него динамически , с помощью оператора NEW ... ?
Пример выше , не помогает , как ни странно ... - работает не верно ...

Добавлено через 45 минут
Разобрался , тему моно закрывать ...

P.S :
Assembler
1
2
3
4
        MOV EDX, arr;
        ADD EDX, dword ptr[4];
        ADD EDX, dword ptr[4];
        MOV EAX, dword ptr[EDX];
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
27.04.2013, 17:06
Цитата Сообщение от z1p0 Посмотреть сообщение
Assembler
1
ADD EDX, dword ptr[4]
Что за? Это же с access violation должно вылететь с обращением по такому адресу.
0
0 / 0 / 0
Регистрация: 17.08.2012
Сообщений: 29
27.04.2013, 17:12  [ТС]
В регистре EDX у нас память ...С ней и работаем , увеличивая на 4 )))))

Добавлено через 18 секунд
Все ок - проверено !!! :]

Добавлено через 29 секунд
Да , увеличивая на 4 - переходим к следующему элементу массива ЫЫЫЫ
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
27.04.2013, 17:18
То что ты написал на самом деле чушь. Сегодня работает, завтра - нет.
Код работает не так как ты думаешь.
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
27.04.2013, 18:33
Цитата Сообщение от z1p0 Посмотреть сообщение
Да , увеличивая на 4 - переходим к следующему элементу массива
твой код
Assembler
1
ADD EDX, dword ptr[EDX];
на С выглядет вот так
C++
1
2
int edx; // назовем переменную еdх для наглядности
edx += *((int*)4);
понимаешь, что ты написал?
0
0 / 0 / 0
Регистрация: 17.08.2012
Сообщений: 29
28.04.2013, 14:16  [ТС]
Хммм.... Ну тогда , намекните , как же написать правильно ???

Добавлено через 1 минуту
Как , я написал выше - если массив задается константно - то все работает , как надо Но если по указателю ... то нет:|

Добавлено через 1 минуту
У , меня лично - мой вариант работает верно , но как понимаю - можно проще :?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.04.2013, 14:16

Ассемблерные вставки (Часть 3)
На 4 шаге ошибка -nan(ind). Не могу разобраться... #include<iostream> using namespace std; int main() { int n = 6.0; int...

Ассемблерные вставки, ошибка
Ошибка: 0xC0000095: Integer overflow. Код: mov eax,x sub eax,a mov ebx,x sub ebx,c div ebx - здесь ошибка mov f,ebx

Ассемблерные вставки в Visual DSP++
Добрый вечер, необходимо вставить ассемблерный код ( или файл на ассемблере подключить в с++) в visual DSP++. Насколько знаю, в visual...

Как делаются ассемблерные вставки?
Я слышал, что в С++ можно вставлять вставки на асм, как это делается? Спасибо.

Зачем нужны ассемблерные вставки в Си (msvs) ?
Объясните мне, человеку, который пока не знает ассемблер, но который хочет его в дальнейшем изучать, на кой черт нужны ассемблерные вставки...


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru