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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2011, 18:17   #1
Farrel
Форумчанин
 
Аватар для Farrel
 
Регистрация: 21.04.2010
Сообщений: 144
По умолчанию Порядок передачи данных.+

Делаю прогу, в которой надо передать из С данные в асм (на 10-й вижле если это важно). При передаче данных функции асма они перемешиваются каким-то странным образом.
Если скажем в функцию передавал 1,2, a1,a2 где a1 a2 какие-то указатели, то цифры 1 и 2 появятся в ассемблерной процедуре в newbase и numb сответственно.
Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;

extern "C" int convert(int base, int newbase,char* numb,char* newnumb);

void main()
{
	int i;
	int base, newbase;
	char numb[100];
	char newnumb[100];
	for(i=0;i<100;i++)
		numb[i]='\0';
	//инициализация
	printf("Enter base\n");
	scanf("%d",&base);
	printf("\nEnter new base\n");
	scanf("%d",&newbase);
	printf("\nEnter your number\n");
	for(i=0;i<100;i++)
	{
		numb[i]=getche();
		if(numb[i]==13)
		{
			numb[i]='$';
			break;
		}
	} 
	fflush(stdin);
	convert(base,newbase,numb,newnumb);///////////////////////////////вот тут собственно и выполняю передачу
	printf("%d",i);
		getch();
}
Код:

.MODEL SMALL,C
.STACK 256
.DATA
.CODE

convert PROC near uses esi edi, base:dword, newbase:dword, numb:dword, newnumb:dword

ret
convert ENDP

END

Последний раз редактировалось Farrel; 13.05.2011 в 18:37.
Farrel вне форума Ответить с цитированием
Старый 13.05.2011, 19:11   #2
UsamaBenLadan
Пользователь
 
Аватар для UsamaBenLadan
 
Регистрация: 01.05.2011
Сообщений: 23
По умолчанию

Если на TASM, то у меня не было проблем с таким описанием:
convert PROC C near uses esi edi, base: dword, newbase: dword, numb: dword, newnumb: dword
(и соответственно - PUBLIC C convert)

Хотя можно попробовать и
.MODEL FLAT,C
(но без STACK)
UsamaBenLadan вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Странные передачи данных bulldog5293 Работа с сетью в Delphi 14 28.11.2010 23:33
Проблема внутренней передачи данных Alex Cones Общие вопросы Delphi 0 11.07.2010 11:44
сжатие при передачи данных Makarov Работа с сетью в Delphi 5 17.01.2008 21:41