在我的calcilator projuect中,我正在做一个Mod动作
前。 15%6 = 3
当我这样做并且有一个mod(!= 0)时它正在工作
但是当我这样做并且mod是0时,例如。 100%10
该程序甚至没有显示我输入'%',只是退出。
完整计划:http://pastebin.com/zkHw911M(第168行)
OR除以和Mod部分:
DivideDo:
push ax
;mov ax , word ptr Num1Int
mov ah , 0
mov al , Num1Int
div Num2Int
mov ResultInt , al
pop ax
ret
ModDo:
push ax
;mov ax , word ptr Num1Int
mov ah , 0
mov al , Num1Int
div Num2Int
mov ResultInt , ah
pop ax
ret
ScreenShoot:
答案 0 :(得分:0)
你的DoMod
看起来对我好。我怀疑你的Int2Str
是问题所在。在我看来,如果结果为零,那么你pop
一些尚未push
的东西,并且不会在你的字符串中加上'0'。结果为零的sub
是否有效?我(不方便)无法测试您的代码,但我认为cmp al, 0
应该在div
后计算,计算数字,push
它 - jnz top
比jmp top
...微妙的错误!看那里,看看是否有帮助...
答案 1 :(得分:0)
看来您的“显示十进制数”例程存在致命缺陷。它假定至少有一个非零数字要显示。
I1:
cmp al,0 <-- In the case where the result is zero, you don't push anything on the stack
je I2
mov ah,0
div dl
push ax
inc cx
jmp I1
I2:
pop ax
add ah,30H
mov [bx] , ah
inc bx
loop I2