test.asm
.586
.model flat,C
findMax PROTO C,array:PTR SDWORD,count:SDWORD
.code
findMax PROC C,
array:PTR SDWORD,
count:SDWORD
mov eax,0
mov ecx,count
l1:
cmp eax,SDWORD PTR[array]
jae l2
mov eax,SDWORD PTR[array]
l2:
add array,4
loopd l1
ret
findMax ENDP
END
testc.cpp
#include<stdio.h>
extern "C" int findMax(int*array,int count);
void main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int max=findMax(&a[0],10);
printf(" %d \n",max);
}
c中函数返回类型是int时是用eax作为返回值的吧。为什么结果打印出来是1638212
------解决方案--------------------------------------------------------
但是,你没有把它当做指针来用!
cmp eax, sdword ptr [array] 你看下最后的可执行程序里的指令是什么,运行下到这里,看看相应的项的内容是什么?当地址作为个参数,要获得地址上的数据,一个指令是难以做到的;或许可以这样
- Assembly code
push esimov eax,0mov esi, arraymov ecx,countl1:cmp eax,[esi]jae l2mov eax,[esi]l2:add esi,4loopd l1pop esiret