2
GetLCM PROC
tryAgain:
   mov bx, 0
   inc Multiple
   mov ax, UserInputNum1              ;Move UserInputNum1 to the 16 bit Register
   mov bx, Multiple
   div bx                             ;<-------Error here
   cmp dx,0                           ;If dx is not zero then there is a remainder
   jne tryAgain                       ;If not equal jump
ret
GetLCM ENDP

これらの2つの数値を除算しようとすると、整数オーバーフローエラーが発生し続けます。divを使おうとすると壊れます。

ユーザーが入力した2つの数値の最小公倍数を見つけようとしています。最初に素数を見つけるために各数値を除算してから、1つが見つかるたびに、ユーザーが入力した他の数値と比較することにしました。もちろん、両方の数値を同時に実行しますが、現時点では、このエラーを乗り越えようとしています。

これはASMでの私の5週目なので、なぜこれが起こっているのか少し混乱しています。また、これを32ビット数でも機能させたいと付け加えたいと思います。私の考えは、ポインターを使用することです。これはこれを行うための良い方法ですか?助けてくれてありがとう!

4

2 に答える 2

5

xor dx, dxあなたの前のどこかdiv

于 2012-11-15T03:37:38.917 に答える
2

div説明書をもう一度読んでください。何を何で割りますか?オペランドの 1 つを適切な値に設定していません。

于 2012-11-15T03:37:49.253 に答える