标题:汇编新手求教个问题
取消只看楼主
风动旗动
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-371011-1-1.html




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

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