装配定义错误

时间:2018-03-21 19:58:36

标签: function assembly symbols

我正在尝试使用我的汇编函数来使其工作,但遇到了一些难以获得的错误。一个是A2005,它表示符号重新定义:_Average。 另一个是A1010,它表示无法匹配的块嵌套:_Average 任何帮助表示赞赏。

.cpp代码

#include<iostream>

using namespace std; 

extern "C" long Average(long, long[]);

int main()

{ 
long Array1[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 
long Array2[11] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; 
cout << "Average of Array1 is " << Average(10, Array1) << endl;
cout << "Average of Array2 is " << Average(11, Array2) << endl; 
}

long Average(long, long[])
{
    return 0;
}

.asm文件

.386
.model flat

public _Average

.data

.code


_Average    proc
            push    ebp;
            mov     edx, 10;
            mov     ebx, [ebp+12]
            xor     ecx, ecx;
            xor     eax, eax;
        Loop1:
            add     eax, [edx + (ecx * 4)];
            inc     ecx;
            cmp     ecx, edx;
            jnz     Loop1;
        Done1:
            mov     ebx, 2;
            idiv            ebx;
            pop     ebp;
            ret
_Average    endp

_Average    proc
            push    ebp;
            mov     edx, 11;
            mov     ebx, [ebp+12];
            xor     ecx, ecx;
            xor     eax, eax;
        Loop2:
            add     eax, [edx + (ecx * 4)];
            inc     ecx;
            cmp     ecx, edx;
            jnz     Loop2;
        Done2:  
            mov     ebx, 2;
            idiv    ebx;
            pop     ebp;
            ret
_Average    endp


            end

0 个答案:

没有答案