本ページは公開が終了したページの複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

EMM386.EXEのエラー(Exception Error)について

文書番号: 405963

最終更新日: 2003/11/10


この資料は以下の製品について記述したものです。


概要

CONFIG.SYS ファイルで EMM386.EXE を組み込んでいる際、以下のようなエラーメッセージが出る場合があります。
                EMM386 はエラー #nn をアプリケーション内のメモリアドレス
                に見つけました - xxxx:xxxx.  データをなくす危険を最小に
                するために, EMM386 はコンピュータを停止させました.
                詳しくは, READMEJ.TXT ファイルを参照してください.
                コンピュータを再起動するには, Enter キーを押してください.
このエラーは、MS-DOS 6.2/V に付属している EMM386.EXE Version 4.48 より以前のもの (たとえば Windows3.1 に付属している EMM386.EXE Version 4.44 など) では、Exception Error として表示されていたものです。ここでは、このエラーについて説明いたします。

1. EMM386.EXE とエラー

EMM386.EXE は 80386 CPU もしくは 80486 CPU が持つ、仮想86 モードという機能を利用して、メモリの管理をしています。仮想 86 モードの環境下で動いているプログラムが、そのプログラムに割り当てられたエリア以外のメモリにアクセスしようとした場合、EMM386.EXE はそれを検出して上記のようなエラー メッセージを表示し、他のプログラムに被害が及ばないよう保護機能を働かせてコンピュータを停止させます。上記のエラー メッセージで、エラー #nn には、80386 CPU (80486 CPU も含む) の検出したエラーのコードが入ります。また、xxxx:xxxx は、問題が発生した時に CPUが実行していたメモリのアドレスで、そのアドレスを調べることによって、どのプログラムで問題が起こったか判別できる場合もあります。

2. エラーの種類

CPU の検出するエラーには次のようなものがあります。
  コード        意味
   0           Divide error  (除算エラー)
   1           Debugger interrupt  (デバッグ割り込み)
   2           Nonmaskable interrupt  (ハードウェア NMI)
   3           Breakpint  (ブレーク ポイント)
   4           Overflow interrupt  (オーバフロー)
   5           Array bondary violation  (境界チェック)
   6           Invalid opcode  (無効オぺコード)
   7           Coprocessor not available  (コプロセッサ利用不可)
   8           Double fault  (二重フォールト)
   9           Coprocessor segment overrun  (コプロセッサ セグメント超過)
  10          Invalid task state segment  (無効TSS)
  11          Segment not present  (不在セグメント)
  12          Stack exception  (スタック セグメント)
  13          General protection violation  (一般保護違反)
  14          Page fault  (ページ例外)
  16          Coprocessor error (コプロセッサ エラー)
これらのコードの中で EMM386.EXE が関係するものは、主に #6と #13です。

エラー #6 無効オぺコード

このエラーは、仮想 86 モードで動いているプログラムが、そのプログラム用に割り当てられた以外のメモリにアクセスした時に出ます。その不法アクセスしたメモリが他のプログラムによって使用されていなくても、そこにはそのプログラムのコードは存在しません。したがって、CPU の動作が途切れてしまい、エラーになります。

エラー #13 一般保護違反

このエラーは上記の エラー #6 同様、仮想86 モードで動いているプログラムが、そのプログラム用に割り当てられた以外のメモリにアクセスした時に出ます。しかし、その不法にアクセスした先のメモリが他のアプリケーションによって使用されている場合、そのアプリケーションにも被害が及ぶ可能性があるので、CPU はエラーを出します。

Keywords: DOS6V EMM EMM386 ERROR LIST MEMORY KB405963
Technology: kbMSDOSSearch

inserted by FC2 system