Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Ошибка при компиляции


Автор: Tamplier 27.5.2007, 14:03
При компиляции пректа возникает ошибка
undefined symbol asmproc (int near*, int, int) in module lab_mas.c
Подскажите, как её исправить?
Вот код
 
Код

#include <stdio.h>
#include <stdlib.h>

//extern "C"
void ASMPROC (int *,int,int);

main()
{
  //    extern void _ASMPROC (int *,int,int);
    int *m; //ukazatel' na massiv
    int r;  //razmer massiva
    int i; //schetchik FOR dlya vvoda elementov massiva
    int l; //peremennaya dlya vuchislennoy summu

    printf ("\n Vvedite razmer massiva: "); //zaprashivaem razemer
    scanf ("%d",&r);                        //vvod razmera

    m=(int*)malloc(r*sizeof(int)); //vudelenie pamyati pod massiv

    printf ("\n Vvedite elementu massiva: "); //zaprashivaem elementu massiva

    for (i=0;i<r;i++) //vvod elementov
    {
        printf ("\n a[%d]=",i+1);
        scanf ("%d",&m[i]);
    };

    ASMPROC(m,r,l);

    printf ("\n Summa ravna %d",l);

    getchar();
    getchar();
    return 0;
}

и для ассемблеровского файла
Код

.model small
.code
_ASMPROC proc C near
ARG am:ptr, ar:word, asum:word
public _ASMPROC
push si
push cx
push bx
pushf

mov si,[am] ;SI-smeshenie massiva
xor bx,bx   ;obnulyaem BX

met_cikl:   ;nachalo cikla dlya vuchisleniya summu
lodsw       ;AX=znachenie ocherednogo elementa massiva 
mov bx,ax
cmp ax,bx
je m1
jb m2
m1:
cmp bx,20
jb m2
je m3
m2:
mov ax,bx
mov l,ax
m3:
inc si
cmp si,ar   ;sravnivaem znachenie SI i razmer massiva
jbe met_cikl ;esli znachenie SI men'she razmera massiva, to cikl snova nachnet ispolnyat'sya
popf
pop bx
pop cx
pop si
ret
_ASMPROC endp
ends
end

Автор: MAKCim 28.5.2007, 08:58
Tamplier, 
у тебя вроде как в .c файле ASMPROC, а в .asm - _ASMPROC
кроме того, делай так
Код

extern "C" void _ASMPROC (int *,int,int);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)