2013-03-02 2 views
0

В моей настройке calcilator я делаю действие ModASM | Выход программы после Mod (%) равен 0 в калькуляторе проекта

ex. 15% 6 = 3

Когда им делать это и есть моды (! = 0) его работа

, но когда им это делать и модник 0, напр. 100% 10

Программа даже не показывает, что я ввел «%» и просто выходил.

Полная программа: http://pastebin.com/zkHw911M (строка 168)

ИЛИ разделяй и 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

Ваш DoMod выглядит хорошо для меня. Я подозреваю, что ваша проблема Int2Str. Мне кажется, что если результат равен нулю, вы не получите что-то, что не было push ed, и никогда не ставьте «0» в свою строку. Делает ли sub результат нулевой работы? Я не могу (удобно) проверить ваш код, но я думаю, что cmp al, 0 должен идти ПОСЛЕ div, считать цифру, а push - jnz top, а не jmp top ... Тонкая ошибка! Посмотрите там, и посмотрите, поможет ли это ...

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 
Смежные вопросы