5

前学期の情報学に関するコンピュータアーキテクチャ試験で、 「MASMの「DIVEDX」が常にプロセッサ例外を生成するのはなぜですか?」という質問があります。
例外を発生させるメカニズムは何ですか?

4

1 に答える 1

13

x86 CPUで1オペランド除算を行う場合、EDX:EAX(64ビット)は第1オペランド(32ビット)で除算されます。結果はEAX(32ビット)に保存されます。

したがって、EDX:EAXをEDXで除算すると、基本的に(EDX * 0x100000000 + EAX)/ EDXになります。この結果は、常に0x100000000を超え、ターゲットレジスタに収まらないか、除数がゼロになります。どちらの場合も、除算例外が発生します。

このページも参照してください(Intel開発者マニュアルから)。

これはアセンブラ(MASM)に固有のものではなく、この場合はプラットフォームに固有のものであることに注意してください。

于 2012-09-01T22:13:45.177 に答える