• ベストアンサー

vistaでリアルモード⇔プロテクトモード

 Windows Vista上でdebugコマンドで『はじめて読む486』という本に従ってサンプルを動かしているんですが、リアルモードとプロテクトモードの切り替えのコードを実行しようとすると特権がどうのこうのとエラーメッセージが出て動きません。  これを動くように変更することは出来ますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

Vista ならユーザプログラムはプロテクトモード (ring 3) で動いています. モード間遷移はすべてどこかに特権命令を入れる必要があると思いますが,特権命令を実行するためには ring 0 にいる必要があり, そこに行くためには通常タスクゲート経由となります. サービスは ring 0 くらいだったと思うので, 「モード間遷移を行う」サービスを作れば理論上は可能かもしれません. ここまでで分からない単語が 1個でもあるなら, 簡単に「むり」と思ってもらって構いません.

bobviv
質問者

お礼

有難うございます。

その他の回答 (1)

  • kenji_aki
  • ベストアンサー率50% (29/58)
回答No.1

「はじめて読む486」では リアルモードで動くMS-DOSでは32bitCPUの機能を生かせないために プロテクトモードに切り替えて486CPUの機能を引き出そう、と云った意向であると思います。 故に、実際にプログラムを動かす場合にはリアルモードのMS-DOS上で行うべきかと存じます。 結論としてはそのコードはOSが駄目だと言ってる以上無理でしょう。 仮にも信頼性を求められるOSがリアルモードとプロテクトモードを切り替える仕組みをユーザーに提供してるとは考えられません。 リアルモードに切り替えた場合に信頼性が失われるからこそ 仮想8086モードなんかもあるわけですし。 どうしても、やりたいなら先に書いたとおりリアルモードのMS-DOS上で行ってください。

bobviv
質問者

お礼

有難うございます。

関連するQ&A