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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2011, 02:19   #1
РагнаР
Пользователь
 
Регистрация: 19.10.2010
Сообщений: 25
По умолчанию Вызов функций на Ассемблере в программе на С++

Помогите,пожалуйста.
Нужно написать программу, состоящую из ассемблерной функции в одном файле( файл только на ассемблере и с расширением .asm) и вызове её в главном файле на С++.
Программа пока сделана только как один файл с ассемблерной вставкой.
Помогите её разбить на 2 файла.
Вот код:
Код:
#include<iostream>
using namespace std;
int main()
{
	setlocale(LC_ALL,".1251");
	char*stroka=new char[255];
	cout<<"Введите строку длиной не более 255 символов"<<endl;
	cin.getline(stroka,255);
	short int N=strlen(stroka);
	char*new_str=new char[N++];
	_asm
	{
		mov esi,stroka ; исходная строка
		mov edi,new_str ; новая строка
		xor edx,edx ; edx - номер элемента новой строки, с которой работает программа
begin:
		xor eax,eax ;ah-  начало слова,al- конец
		xor ebx,ebx ; bh- начало минимального слова ; bl - его длина
		xor ecx,ecx ;ecx- номер элемента, с которым в данный момент работает программа
		mov bl,-1
		mov al,-1
min_word :
		cmp cx,N
		je end
		cmp [esi][ecx],' '
		je word_end
		cmp [esi][ecx],'\0'
		je word_end
		inc cx
		
		jmp min_word
word_end:
		
		mov ah,al
		inc ah
		mov al,cl
		inc cx
		cmp ah,al
		je min_word
		sub al,ah
		cmp al,0
		jng min_word
		cmp al,bl
		jg new_min_word
		add al,ah
		jmp min_word
new_min_word:
		
		mov bl,al
		add al,ah
		mov bh,ah
		jmp min_word
end:
		cmp bh,bl
		push ebx
		mov bl,bh
		mov bh,0
		mov ecx,ebx
		pop ebx
delete_word:

		cmp bl,-1
		je full_end
		cmp bl,0
		je exit_point
		mov ax,[esi][ecx]
		mov [edi][edx],ax
		inc	edx
		mov [esi][ecx],' '
		inc ecx
		dec bl
		jmp delete_word
exit_point:
		
		mov[edi][edx],' '
		inc edx
		jmp begin
full_end:
		mov[edi][edx],'\0'
	}
	cout<<"Искомая строка"<<endl;
	cout<<endl<<new_str<<endl;
	return 0;
}
Заранее спасибо

Последний раз редактировалось РагнаР; 28.05.2011 в 11:16.
РагнаР вне форума Ответить с цитированием
Старый 30.05.2011, 16:15   #2
РагнаР
Пользователь
 
Регистрация: 19.10.2010
Сообщений: 25
По умолчанию

Вот что я сделал, но выдает ошибку

Error 1 error PRJ0019: A tool returned an error code from "Assembling..." assembler_podrogramm


Код:
.386
PUBLIC _sorting@12
.model flat
.code
_sorting@12 proc
		push ebp
		mov ebp, esp
		mov esi,[esp+8]
		mov edi,[esp+12]		
		
		xor edx,edx ; edx - номер элемента новой строки, с которой работает программа
beg:
		xor eax,eax ;ah-  начало слова,al- конец
		xor ebx,ebx ; bh- начало минимального слова ; bl - его длина
		xor ecx,ecx ;ecx- номер элемента, с которым в данный момент работает программа
		mov bl,-1
		mov al,-1
min_word :
		cmp cx,[esp+16]
		je ende
		cmp [esi][ecx],' '
		je word_end
		cmp [esi][ecx],'\0'
		je word_end
		inc cx
		
		jmp min_word
word_end:
		
		mov ah,al
		inc ah
		mov al,cl
		inc cx
		cmp ah,al
		je min_word
		sub al,ah
		cmp al,0
		jng min_word
		cmp al,bl
		jg new_min_word
		add al,ah
		jmp min_word
new_min_word:
		
		mov bl,al
		add al,ah
		mov bh,ah
		jmp min_word
ende:
		cmp bh,bl
		push ebx
		mov bl,bh
		mov bh,0
		mov ecx,ebx
		pop ebx
delete_word:

		cmp bl,-1
		je full_end
		cmp bl,0
		je exit_point
		mov ax,[esi][ecx]
		mov [edi][edx],ax
		inc	edx
		mov [esi][ecx],' '
		inc ecx
		dec bl
		jmp delete_word
exit_point:
		
		mov[edi][edx],' '
		inc edx
		jmp beg
full_end:
		mov[edi][edx],'\0'
		mov eax,edi
			
		
		mov esp,ebp
		pop ebp
		ret 12
        _sorting@12 endp
        end
Как это исправить?

Последний раз редактировалось РагнаР; 30.05.2011 в 16:50.
РагнаР вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Dll в ресурсах и вызов функций из нее Obsever0 Общие вопросы Delphi 15 15.09.2015 23:46
объявление функций и вызов SnOoPKa Общие вопросы C/C++ 3 30.01.2011 01:53
Вызов процедур в моей программе Беллая Общие вопросы Delphi 6 21.08.2010 08:01
Повторный вызов функций Roman Общие вопросы C/C++ 1 10.06.2009 14:48