2

重複の可能性:
ASM x86 整数オーバーフロー

除算エラー - オーバーフローが発生しましたが、その理由がわかりません。エラーを再現する完全なコードは次のとおりです

include emu8086.inc

org 100h

       mov ax, 2 
       mov bx, 10
       div bx

       mov ax, 2
       mov bx, 2
       div bx   
       ret
4

1 に答える 1

10

xor dx, dxそれぞれの前に追加してみて、divそれが役に立たないかどうかを確認してください。

16 ビットのターゲットを指定しているため、そのターゲットでdiv割りdx:axます。dx最初に大きな数 (より正確には、非常に小さな数以外) が含まれている場合、結果はオーバーフローします。オーバーフローしなくても、意図したとおりに結果がax/になるわけではありません。bx

于 2012-12-18T21:21:45.450 に答える