Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/34: Рейтинг темы: голосов - 34, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 05.10.2010
Сообщений: 11

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

06.10.2010, 17:27. Показов 6995. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Только начали изучать ассемблерную вставку в С++....первую лабу я кое-как сам сделал (там елементарные арифметические действия с числами) , а вот с второй напряг...

Нам дан одномерный массив из 10 целых чисел (ввод не с клавиатуры) нам нужно найти два минимальных елементы етой последовательности и перемножить их, и вывести на екран результат.Напишите и раздуплите, если не сложно!!! В Паскале ета задачка раз плюнуть..а тут запара
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.10.2010, 17:27
Ответы с готовыми решениями:

Ассемблерная вставка в С++
Задача: дан одномерный массив из 10 элементов, найти минимальный элемент массива, а также среднее арифметическое массива. Операции по...

Ассемблерная вставка, одномерный масив.
Только начали изучать ассемблерную вставку в С++....первую лабу я кое-как сам сделал (там елементарные арифметические действия с числами) ,...

Ассемблерная вставка
Товарищи!! кто знает, подскажите как сделать ассемблерную вставку в cи-проекте в среде Turbo C?? я пытался скормить ему asm...,но...

12
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
06.10.2010, 19:50
Wolfhound, у вас проблемы с ASM или C++?
0
0 / 0 / 0
Регистрация: 05.10.2010
Сообщений: 11
06.10.2010, 22:34  [ТС]
Ассемблер и Ассемблерная вставка в С++ разные вещи....у меня проблема с ассемблерной вставкой в С++!!!!!

_asm{.......} вот так она начинаеться и заканчиваеться (а вместо многоточия нужен код программы)
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
07.10.2010, 00:04
Wolfhound, для вас может и разные, для меня асм одинаковый там и там.
Размер чисел какой? Word, DWord?
0
0 / 0 / 0
Регистрация: 05.10.2010
Сообщений: 11
07.10.2010, 21:36  [ТС]
пофиг
0
0 / 0 / 0
Регистрация: 03.10.2010
Сообщений: 17
25.05.2012, 16:45
M128K145, Помогите, пожалуйста, создать двумерный массив в ассемблерной вставке!
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
void CreateMatrix (int size1)
{
    __asm
    {
            
mov ebx, size1
shl ebx, 2 //эта фигня умножает размер на 4, чтоб в байтах были
push ebx
call dword ptr malloc
add esp, 4
//mov ecx, eaх //теперь в есх адрес начала строк(или столбцов)
 
 
 
xor edi, edi
mov ecx, size1 //тут будет размер
//shl ecx, 2 //опять умножили на 4
push ecx
 
 
 
FOR1:
 
mov ebx, [esp+4]
call dword ptr malloc
add esp, 4
mov [ebx+edi*4], eax // складывать адреса в ячейки памяти)))
 
inc edi
loop FOR1
 
}
};
Что я делаю не так??
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
25.05.2012, 23:27
Цитата Сообщение от Wolfhound Посмотреть сообщение
Ассемблер и Ассемблерная вставка в С++ разные вещи...
судя по тому что ты сказал, для тебя это вообще не имеет никакого значения... Более чем уверен что ты вообще не знаешь что такое ассемблер...
Задай вопрос осмысленно.. С полным пониманием и осознанием того что тебе нужно.

Добавлено через 4 минуты
veselyj_splin, не бойся создать новый пост!
0
0 / 0 / 0
Регистрация: 03.10.2010
Сообщений: 17
26.05.2012, 03:30
Цитата Сообщение от lazybiz Посмотреть сообщение
veselyj_splin, не бойся создать новый пост!
Я не боюсь. Только результат один - никто не отвечает.
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
26.05.2012, 05:58
veselyj_splin, а почему в функцию, которая выделяет память под двумерный массив, передается только одно значение? Или массив должен получиться size * size ?
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
26.05.2012, 06:00
Цитата Сообщение от M128K145 Посмотреть сообщение
Wolfhound, для вас может и разные, для меня асм одинаковый там и там.
ты знаешь ТС в чем то прав.
Не все что дозволяется в ассемблере можно сделать во вставке.
например работать со стеком.(оно и понятно можно так накрутить что прога рухнет)
метки вроде бы можно ставить только вне блока asm.
есть еще один вариант пишешь один файл на С другой на асме компилишь каждый и линкуешь вместе
что далеко не
Цитата Сообщение от Wolfhound Посмотреть сообщение
пофиг
Цитата Сообщение от veselyj_splin Посмотреть сообщение
add esp, 4
работаешь со стеком может в этом проблеммы?
Цитата Сообщение от veselyj_splin Посмотреть сообщение
FOR1:
метка в блоке
Цитата Сообщение от veselyj_splin Посмотреть сообщение
Assembler
1
2
3
4
5
6
mov ecx, size1 //тут будет размер
//shl ecx, 2 //опять умножили на 4
push ecx
FOR1:
mov ebx, [esp+4]
call dword ptr malloc
размер тот же самый (квадратная матрица?)
нет размерности указателя

а вообще отладчик дает ответы на многие вопросы
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
26.05.2012, 06:04
Да не, со стеком можно работать и метки делать можно.
0
0 / 0 / 0
Регистрация: 03.10.2010
Сообщений: 17
27.05.2012, 12:14
Цитата Сообщение от Kastaneda Посмотреть сообщение
veselyj_splin, а почему в функцию, которая выделяет память под двумерный массив, передается только одно значение? Или массив должен получиться size * size ?
Да, должна получиться квадратная матрица..

ValeryS, со стеком и метками работать можно. Но что-то я не так делаю, из-за портятся регистры(
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
28.05.2012, 06:59
Цитата Сообщение от veselyj_splin Посмотреть сообщение
ValeryS, со стеком и метками работать можно.
Цитата Сообщение от Kastaneda Посмотреть сообщение
Да не, со стеком можно работать и метки делать можно.
насчет меток я сказал
Цитата Сообщение от ValeryS Посмотреть сообщение
метки вроде бы можно ставить только вне блока asm.
ключевое слово вроде бы
я писал асм вставку для микроконтроллера( не помню компилятора) вот он старательно не переваривал метки внутри блока
насчет стека
имеется ввиду не PUSH POP
а более серьезная работа
посмотри например Ошибка компилятора C2431
http://msdn.microsoft.com/ru-r... xcb5a.aspx
вот интересная статейка про то что может MASM и не может VS
http://www.xakep.ru/magazine/xs/071/040/1.asp


veselyj_splin, я тебе накидал программку с комментариями но это решение в лоб, никакой оптимизации
и только выделил память ничего не заполнял
и если будет ошибка при втором(а так же последующем) выделении получим утечку
т.е работать и работать
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
#include "stdafx.h"
#include <malloc.h>
 
 
int** CreateArray(int size1,int size2)
{
_asm
{
 mov ebx,size1;  // сколько строк надо создать
 lea ebx,[ebx*4];  // приводим к размеру указателя
  push ebx;   // передача параметра
  call  dword ptr malloc;  // выделение памяти для массива указателей 
  pop ebx;    // востановить стек    
  test eax,eax;  // проверяем если память не выделена
  jz exit         // то выходим   
  mov edi,eax;    // сохраняем адрес выделеной памяти
  mov edx,0       // индекс строки 
  mov ecx,size1;  // в счетчик сколько строк надо создать
 
while_create:   
  lea esi,[edi+edx*4] //смешение в памяти массива указателей куда запишем адрес строки
    mov ebx,size2;    // размер строки
    lea ebx,[ebx*4];  // приводим размер к int(для short *2 для char ничего умножать не надо)
    push ecx;     // сохраняем регистры
    push edx;     //malloc их портит
    
    push ebx;   // передача параметра
    call  dword ptr malloc; // выделение памяти для строки
    pop ebx;    // востановить стек  
    
    pop edx;    //вспоминаем регистры
    pop ecx;  
 
    test eax,eax;  //проверяем если память не выделена
     jz exit       // то выходим   
    mov [esi],eax  //запоминаем адрес строки
    inc edx;       // прибавляем  индекс строки 
loop while_create; // цикл пока счетчик не равен 0
    mov eax,edi;   // вспоминаем адрес массива для для возврата из функции (в eax что возвращаем) 
exit:
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int ** array;   
array=CreateArray(4,6); 
 
    
    
    
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.05.2012, 06:59
Помогаю со студенческими работами здесь

С++ и Ассемблерная вставка/чтение SPD ОЗУ
Добрый день форумчане, делаю программу на подобии CPU-Z, необходимо узнать тайминги и прочую информацию из SPD оперативной памяти. Нашел...

Числа, в двоичном представлении которых есть группа из 3 и более подряд идущих единиц или нулей (ассемблерная вставка)
здравствуйте, подскажите пожалуйста алгоритм для моей задачи: нужно написать в порядке возрастания числа, в двоичном представлении которых...

Дана длина отрезка в метрах, сантиметрах,миллиметрах. Перевести в футы, а все что после запятой в дюймы
Здравствуйте, в задании нужно было написать код на С и сделать ассемблерную вставку. &quot;Дана длина отрезка в метрах,...

Ассемблерная вставка на С++
Написал сегодня код. int x, y; //Исходные числа float res = 0; //Результат расчетов cin &gt;&gt; x &gt;&gt; y;//Вводи операнды ...

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru