アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (2件)

「はじめて読む486」では


リアルモードで動くMS-DOSでは32bitCPUの機能を生かせないために
プロテクトモードに切り替えて486CPUの機能を引き出そう、と云った意向であると思います。
故に、実際にプログラムを動かす場合にはリアルモードのMS-DOS上で行うべきかと存じます。

結論としてはそのコードはOSが駄目だと言ってる以上無理でしょう。
仮にも信頼性を求められるOSがリアルモードとプロテクトモードを切り替える仕組みをユーザーに提供してるとは考えられません。
リアルモードに切り替えた場合に信頼性が失われるからこそ
仮想8086モードなんかもあるわけですし。
どうしても、やりたいなら先に書いたとおりリアルモードのMS-DOS上で行ってください。
    • good
    • 0
この回答へのお礼

有難うございます。

お礼日時:2009/01/29 05:50

Vista ならユーザプログラムはプロテクトモード (ring 3) で動いています.


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

有難うございます。

お礼日時:2009/01/29 05:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!