| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 782 人关注过本帖
标题:汇编新手求教个问题
取消只看楼主 加入收藏
风动旗动
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-6-7
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
汇编新手求教个问题
计算有符号数平均数
.data
array dword 675,354,-34,198
.code
start:
push lengthof array
push offset array
call mean
add esp,8
call dispsid
mean  proc
push ebp
mov ebp,esp
push ebx
push ecx
push edx
mov ebx,[ebp+8]
mov ecx,[ebp+12]
xor eax,eax
xor edx,edx
mean1: add eax,[ebx+edx*4]
add edx,1
cmp edx,ecx
jb mean1
cdq
idiv ecx
pop edx
pop ecx
pop ebx
pop ebp
ret
mean endp
这个程序为什么要用堆栈操作
还有cdq是什么指令
求高手不吝赐教
搜索更多相关主题的帖子: 计算 平均数 
2012-06-07 14:48
风动旗动
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-6-7
收藏
得分:0 
谢谢哦
但我还是有点不懂。我们不是每次写程序都要重新对寄存器赋值,那为什么还要保护寄存器?而且这个程序不用堆栈直接用mov ecx,lengthof array
mov ebx,offset array也可以写啊,影响在哪呢?
2012-06-07 15:11
风动旗动
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-6-7
收藏
得分:0 
我明白了。果然光看书是不够的啊。
还有就是这个cdq指令--eax最高为1,edx=ffffffffh;为0则edx=0.看起来无关紧要,但我试了下没有这条指令就会有溢出错误是什么情况?
2012-06-07 15:38
快速回复:汇编新手求教个问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011749 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved