首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MASM32模除法

MASM32模除法
EN

Stack Overflow用户
提问于 2014-05-10 06:33:07
回答 1查看 335关注 0票数 0

所以我在这里有一个过程,它应该打印一个用"~“初始化的数组。因为我想要一个12x12的游戏板,所以我对144乘以12使用模除法,并在余数为0时打印新行。我肯定在某个地方遇到了问题,我的第一个提示是,它在打印电路板的第二秒就崩溃了。

代码语言:javascript
复制
displayBoard PROC
lea esi, dArray
mov eax, 144

.while eax > 0
    xor edx, edx
    mov ecx, 12
    div ecx
    .if edx == 0
        print 0DH, 0AH
    .endif
    print esi
    sub eax, 1
.endw

mov eax, input()

displayBoard ENDP

EN

回答 1

Stack Overflow用户

发布于 2014-05-10 06:45:55

问题是div指令同时设置了edxeax -它是这样做的:

代码语言:javascript
复制
eax := edx:eax DIV ecx
edx := edx:eax MOD ecx

所以它会重写eax寄存器并中断循环。

此外,eax是一个临时寄存器,对print的调用也会覆盖它。请参阅ABI文档或目标平台的调用约定,了解哪些寄存器是跨函数调用保留的,哪些是未保留的。

最后,我不知道print是做什么的,但是同时使用它和立即的CR/LF值0DH, 0AHesi (指向某个数组的指针)似乎有点可疑。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23574956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档