如何在汇编语言中打印余数

3
我试图取得2013/10的余数并加1。
我已经尝试了这个方案,但是只得到了商,即使我已经将“edx”(即余数)加1,并且我还将“A”移动到“eax”中,这样就可以使用“call writedec”打印它了。
有人能告诉我这段代码出了什么问题吗?如何获得余数并加1?我正在使用MASM汇编器。
.data
    N dword 2013
    A dword 0
    str1 byte " A is =",0

.code
     main proc
     lea edx, str1
     call writestring
     mov edx, 0
     mov eax, N
     mov ebx, 10
     div ebx
     Add edx, 1
     add A, edx
     mov eax, A
     call writedec
     call crlf

1
您正在将余数添加到 A 中,但 A 没有被正确初始化(即包含随机数据)。 - BlackBear
你用的是哪个汇编器?实际得到了什么输出? - lurker
你在为哪台机器编程?使用哪个汇编器? - John Saunders
我正在使用massam。我得到了201,这是2013/10的整数部分,没有余数。 - rullzing
1
你确定你使用的是问题中写的确切代码吗?你没有编译错误导致使用旧版本的可执行文件吗?我尝试了问题中的代码(我使用了NASM,所以我用自己的writestringwritedec函数替换了它们),并得到了预期的输出4((2013%10)+1)。 - Michael
显示剩余4条评论
1个回答

0

替换这两行

 add A, edx
 mov eax, A

用这行代码:

mov eax,edx

同样的事情。从技术上讲,这两者之间没有区别。实际上,我想将余数值添加到A中。 - rullzing
mov eax,edx 行之后,你可以将值移动到 A: mov A,eax - S.MAHDI

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接