0

私の計算機プロジェクトでは、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

スクリーンショット:

4

2 に答える 2

0

あなたDoModは私には大丈夫に見えます。あなたInt2Strが問題だと思います。結果がゼロの場合、あなたは編集popされていないものでありpush、文字列に「0」を入れないでください。sub結果がゼロの aは機能しますか? 私は(便利なことに)あなたのコードをテストすることはできませんが、は 、桁を数える、そしてそれの後にcmp al, 0行くべきだと思います。そこを見て、それが役立つかどうかを確認してください...divpushjnz topjmp top

于 2013-03-02T19:33:18.800 に答える
0

「10 進数の表示」ルーチンに致命的な欠陥があるようです。表示するゼロ以外の数字が少なくとも 1 つあると想定しています。

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
于 2013-03-02T19:37:57.497 に答える