汇编 返回值 怎么不是edx:eax呢

//adds.asm.386;.modelflat,c;//说明汇编语言采用平展模式c语言规范publicadds;//过程名前不加下划线用extern进行说明.code... // adds.asm
.386;
.model flat, c; // 说明汇编语言采用平展模式c语言规范
public adds; // 过程名前不加下划线用extern进行说明
.code;
adds proc; // 被c调用的汇编过程
push ebp;
mov ebp, esp; // 把esp值传给ebp
mov eax, [ebp + 8]; // 取出x送eax
mov ebx, [ebp + 12];// 取出y送ebx
add eax, ebx; // x + y结果送eax
pop ebp; // 恢复ebp
ret; // 返回主程序
adds endp;
End;
// test.cpp
#include <iostream>

using namespace std;

extern "C"{unsigned long adds( unsigned x, unsigned y );}

int main(){
unsigned x = 2, y = 429496729/*5*/;
cout << adds( x, y ) << endl;
}

按照输出结果,是1,可是 我定义的不是unsigned long吗??怎么返回值不是edx:eax呢?
要怎么才能扩展成edx:eax, 求解答!!!
展开
 我来答
zklhp
2011-11-10 · TA获得超过380个赞
知道小有建树答主
回答量:385
采纳率:0%
帮助的人:273万
展开全部
long 或者unsigned long 都是32位的 4字节 返回在eax里

扩展成edx:eax么 long long ?

不过是不是扩展成edx:eax呢 我不知道。。。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式