質問です。
WindowsのDOS窓は基本的にwin上で走るエミュレータだと聞いたのですが、16bitエミュレータのcommand.com上でcmd.exeが呼び出せるのは、どういう仕組みになっているのでしょうか。
ただ、16bitエミュレータ上で32bitのエミュレータを起動したと考えれば良いとは思うのですが、心なしかcommand.com単体のときよりもcommand.com上で呼び出したcmd.exeのほうが、キー入力のエコーバックも早い用に感じます。
ネットで調べてみると、呼び出すたびに切り替えているのではという意見もありましたが、XP上で開いたcommand.comからcmd.exeを呼び出した状態でNASMでアセンブルした16bitのcomファイルが実行できるので、ただ切り替えているだけではないのではないかと疑問が消えません。
また、スタートメニューでファイル名を指定して実行するときに、16bitのcomファイルを指定すると、基本的にはcmdが立ち上がって実行され、プロンプト以外画面には何も表示されないで実行終了となるのですが、2割ほどの確率でcommand.comが立ち上がり、きちんと実行されることがあり余計に混乱しています。
どなたか詳しい方がいらっしゃったら、ご解説を宜しく御願い致します。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
DOS窓というのは、Windows95~Meの話で、XPにはありません。
>command.com上でcmd.exeが呼び出せるのは、
これは、コマンドプロンプトで command /c cmd としたと言うことでしょうか?
タスクマネージャを見ているとわかりますが、このときcmd.exeは3つ起動されています。つまり、コマンドプロンプトで cmd /c cmd としたのと同じと思われます。
>XP上で開いたcommand.comからcmd.exeを呼び出した状態でNASMでアセンブルした16bitのcomファイルが実行できるので、
cmd.exeには16bitアプリを起動する機能があるので別に不思議ではないと思います。
この回答への補足
ご存知かとは思いますが、command.comはMS-DOSネイティブの標準コマンドシェルで、通常XP上ではntvdm.exe上で動きます。
ファイル名を指定して実行の場合も、cmd上でも、>commandで呼び出せ、タスクマネージャーでプロセスを確認すると、ntvdmが立ち上がることが確認できました。
ただこの挙動がどうも曲者で、ntvdmで動くcommand.com上でcmdが呼び出せるのです。タスクマネージャーで確認すると別のプロセスなので、基本的にはシングルタスクであるntvdm経由でcmdが呼び出されているのではないかと思います(エコーバックの反応を見ても別のプロセスだと思った方が納得できる)。
cmdを立ち上げてDOSプログラムを走らせても何も起こりませんが、cmdからcommandを呼べばntvdm上で動きます。ところが、ntvdmからexitしてもう一度cmd上でDOSプログラムを走らせるときちんとcmd上で動いてしまうわけです。
さらに、cmd上でDOSプログラム(.com)を走らせると2割くらいの確率でntvdmを呼び出して実行するのです。
色々調べてみましたが、もうわけが分からなくなっています。
>cmd.exeの16bitアプリを起動する機能
それはntvdmを起動する機能と言う意味でしょうか?ntvdmは単体で起動しても何もしないので、基本的にはcommandを呼ぶほうが一般的だと思うのですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(パソコン・スマホ・電化製品) CMD等でPC操作(excel開く等)を自動化させたい 1 2023/03/15 09:53
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- その他(プログラミング・Web制作) フォルダ内の特定 拡張子のファイルを一括実行するBat ファイルについて 4 2022/04/17 09:51
- Excel(エクセル) [クイックアクセスツールバー]の設定ファイルの格納場所について、 5 2023/04/21 14:43
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- Windows 10 USBにwindows10をいれて起動する方法 5 2022/04/14 14:29
- XML エクセルのマクロについて教えてください。 3 2023/02/06 09:06
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/06 13:01
- 会社・職場 上司から急に呼び捨てされるようになりました 6 2022/12/07 13:01
- その他(プログラミング・Web制作) Pythonの作業環境・作業フォルダの迅速な設定・指定方法 3 2022/04/01 07:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの表にヘンな枠が・・・
-
SONYの音楽ソフト「x-アプリ」...
-
LD_LIBRARY_PATHって?
-
バッチファイル内の各コマンド...
-
taskkill をバッチ処理できない。
-
python IDLEで訂正、削除のやり...
-
shutdownコマンド実行の残り時...
-
Mac de プログラム
-
端末上でgnome-terminal -e lsを
-
Openイベントを開始させないで...
-
コマンドプロンプトについて
-
最初の一度しか実行されないロ...
-
Macでlsした際の、ファイル名の...
-
Linuxで実行ファイルを実行
-
linuxサーバーのキャッシュをク...
-
ROBOCOPY cmdで正常に処理され...
-
windows10のごみ箱をrd /s /q C...
-
win10 バッチファイルの起動時...
-
信頼済みサイト登録をbatファイ...
-
Linux のシェルスクリプトの強...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SONYの音楽ソフト「x-アプリ」...
-
エクセルの表にヘンな枠が・・・
-
pingは正常なのにtracerouteで...
-
ファイルサイズが小さくなりま...
-
windows10のごみ箱をrd /s /q C...
-
LD_LIBRARY_PATHって?
-
バッチファイル内の各コマンド...
-
linuxサーバーのキャッシュをク...
-
最初の一度しか実行されないロ...
-
Linux のシェルスクリプトの強...
-
エクセルからアクセスのプロシ...
-
python IDLEで訂正、削除のやり...
-
SPI非言語の問題 解説お願いします
-
shutdownコマンド実行の残り時...
-
ROBOCOPY cmdで正常に処理され...
-
taskkill をバッチ処理できない。
-
Openイベントを開始させないで...
-
ACCESSレポートをPDFに出力したい
-
sudoで実行したコマンドの実行...
-
信頼済みサイト登録をbatファイ...
おすすめ情報