在x86汇编中实现1+11+111…n项求和遇结果为0问题求助
帮你排查x86汇编求和始终为0的问题
嘿,兄弟,你说把C里的数列求和函数转成x86汇编后结果一直是0,这肯定是某个环节出了问题——但光靠描述没法精准定位呀!得麻烦你把对应的C函数代码和你写的x86汇编代码都贴出来才行。
不过我可以先给你列几个常见的坑,你可以先自查看看:
- 有没有正确初始化累加器?比如求和的寄存器是不是一开始就设成0了?别漏了初始化步骤。
- 生成每一项(1、11、111...)的逻辑对不对?比如是不是用
当前项 = 当前项 *10 +1的方式生成?汇编里乘法操作有没有用对寄存器(比如x86里mul指令的操作数要求)? - 累加的时候有没有正确把每一项加到总和里?是不是寄存器用混了,比如把值加到了错误的寄存器上?
- 函数返回的时候有没有把结果放到正确的寄存器里?比如32位x86里一般用EAX返回整数结果,64位是RAX,别搞错了。
等你把代码贴出来,咱们就能一步步揪出问题所在啦!
内容的提问来源于stack exchange,提问作者Shawn S
相关产品推荐
相关产品推荐

