0

アセンブリで簡単な除算をしようとすると、「除算オーバーフロー」エラーが発生します。

私の簡単なコード: cs:sum と cs:num はバイト変数です。(デシベル)

    mov ax, word ptr cs:sum
mov cl, 10
xor dx,dx
div cl ; divide by 10
mov cs:num, ah ; ger rightest

理由はわかりませんが、私が言うように、適切に分割できません。

それで、あなたはその問題が何であり、それを解決する方法を知っていますか? ありがとう !

(TSR プログラムであるため、cs deference を使用しています)

4

1 に答える 1

4

これにより除算例外が発生します

mov ax, word ptr cs:sum
mov cl, 10
div cl

ax(から来る)の値はword ptr cs:sum>=2560でなければなりません。

word ptr cs:sum2560未満でないか、コードでアドレス指定が壊れていて、値をそこに格納しword ptr cs:sumたり、そこからフェッチしたりしていません(たとえば、参照時に同じセグメント値を使用していませんsum)。

それらが唯一の可能性です。

于 2012-08-28T10:59:12.310 に答える