当前位置: 代码迷 >> 汇编语言 >> 汇编返回值有关问题
  详细解决方案

汇编返回值有关问题

热度:10063   发布时间:2013-02-26 00:00:00.0
汇编返回值问题?
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
  相关解决方案