Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2011, 13:46   #1
alezha
Форумчанин
 
Регистрация: 16.04.2011
Сообщений: 126
По умолчанию С++ и ассемблер

Передача матрицы из .cpp в .asm. как организовать доступ к элементам матрицы?
Условие: написать программу суммирующую элементы матрицы!
Вот два файла проекта. Что изменить надо?
.asm

Код:
.MODEL FLAT, C
public _find_summ
.STACK 500h
.code
    _find_summ PROC USES si matrix_addr:DWORD
 xor eax,eax
 mov esi,matrix_addr 
 mov edx,[esi]
 mov esi,[edx]
next_el:
 mov ecx, 6
 dec ecx
 add eax,esi
 add esi, 4
 loop next_el

 add edx,4
 mov esi,[edx]
 jmp next_el

 RET
 _find_summ endP
END
.cpp
Код:
#include <iostream>
#include <stdio.h>
#define string 5
#define column 6
using namespace std;
extern "C" int _find_summ(int **matrix);
int main()
{
 int summ=0,i,j;
 int **mtr;
 mtr=new int *[5];
 for(i=0;i<string;i++)
 mtr[i]=new int [6];
 for ( i=0;i<string;i++)
 {
 for( j=0;j<column;j++)
 {
 cout<<"Enter"<<endl;
 cin>>mtr[i][j];
 }
 system("cls");
 }
 system("cls");
 summ=_find_summ(mtr);
 cout<<endl<<"Result:  "<<summ<<endl;
 system("pause");
 return 0;
}

Последний раз редактировалось alezha; 16.04.2011 в 19:51.
alezha вне форума Ответить с цитированием
Старый 19.04.2011, 00:11   #2
alezha
Форумчанин
 
Регистрация: 16.04.2011
Сообщений: 126
По умолчанию

уже не надо. сам написал!
alezha вне форума Ответить с цитированием
Старый 19.04.2011, 07:21   #3
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Ну опубликуйте код. Кто-нибудь с поиска попадет, а тут ничего.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 19.04.2011, 17:45   #4
alezha
Форумчанин
 
Регистрация: 16.04.2011
Сообщений: 126
По умолчанию

Передача матрицы из .cpp в .asm. как организовать доступ к элементам матрицы?
Условие: написать программу суммирующую элементы матрицы!
Вот два файла проекта. Что изменить надо?
.asm
Код:
.MODEL FLAT, C
public _find_summ
.STACK 500h
.code
    _find_summ PROC USES si matrix_addr:DWORD
	xor eax,eax
	mov ebx,0
	mov esi,matrix_addr	
	mov edx,[esi]
	mov edi,[edx]  ; на начало строки матрицы
	mov ecx,6 ; кол-во элементов

next_el:
	add eax,edi ; сумма в eax элементов матрицы
	add edx, 4 ; СЛЕДУЮЩИЙ ЭЛЕМЕНТ
	mov edi,[edx]
	dec ecx
	jecxz next_str
	jmp next_el

next_str:
	cmp ebx,4
	je end_sum
	inc ebx
	add esi,4   ;СЛЕДУЮЩИЙ строка
	mov edx,[esi]; 
	mov edi,[edx] ; на начало строки матрицы
	mov ecx, 6  ; кол-во элементов
	jmp next_el

end_sum:		
	RET
	_find_summ endP
END

.cpp
Код:
#include <iostream>
#include <stdio.h>
#define string 5
#define column 6
using namespace std;
extern "C" int _find_summ(int **matrix);
int main()
{
	int summ=0,i,j;
	int **mtr;
	mtr=new int *[5];
	for(i=0;i<string;i++)
		mtr[i]=new int [6];
	for ( i=0;i<string;i++)
	{
		for( j=0;j<column;j++)
		{
			cout<<"Enter"<<endl;
			cin>>mtr[i][j];
		}
		system("cls");
	}
	system("cls");
	summ=_find_summ(mtr);
	cout<<endl<<"Result:  "<<summ<<endl;
	system("pause");
	return 0;
}
alezha вне форума Ответить с цитированием
Старый 20.04.2011, 21:06   #5
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

alezha, или кто-нибудь подскажите как собрать данный проект. У меня Visual C++ 2008, экспресс выпуск.

Возможно модули (функции) написанные на asm каким-то образом упаковываются в какие-то библиотеки и присоединяются к проекту на С++.
Как принято делать?

Возможен ли обратный вариант, когда я, например, создаю пользовательский графический интерфейс на MASMe, используя WinApi и вызываю функцию написанную на С++.

Извиняюсь за дилетантские вопросы.
8Observer8 вне форума Ответить с цитированием
Старый 20.04.2011, 22:37   #6
alezha
Форумчанин
 
Регистрация: 16.04.2011
Сообщений: 126
По умолчанию

создать проект>>Консольное приложение Win32>>галочка пустой проект.
+ надо в вижле потом в проекте выбрать "Настройка построения" выбрать "masm"
alezha вне форума Ответить с цитированием
Старый 21.04.2011, 05:44   #7
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Жаль, но так не получится, так как у меня экспресс выпуск, а там, видимо, нет такой возможности.

Вот все пункты "Свойства конфигурации":
Общие
Отладка
Компоновщик
Инструменты манифеста
Средство создания XML-документов
Информация об исходном коде
События построения
Настраиваемый этап построения

Может библиотеку можно сделать и её подключить?

Последний раз редактировалось 8Observer8; 21.04.2011 в 05:51.
8Observer8 вне форума Ответить с цитированием
Старый 21.04.2011, 14:57   #8
alezha
Форумчанин
 
Регистрация: 16.04.2011
Сообщений: 126
По умолчанию


Последний раз редактировалось alezha; 21.04.2011 в 15:00.
alezha вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ассемблер SWEET_15 Помощь студентам 3 06.09.2016 08:45
Ассемблер... UAC Фриланс 7 30.12.2010 18:31
Ассемблер в С++ JeyKip Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 04.11.2010 19:09
Ассемблер Opiym Фриланс 3 20.05.2010 12:36
Ассемблер Girrl666 Помощь студентам 4 06.09.2009 14:27