cmd.exe和command.com
CMD.EXE是windows nt帶的一個32位的命令行程序,那完全不是DOS. 它是Windows 窗口命令行接口,因此它可以通過窗口右上角的X來關(guān)閉,它不是一個dos窗口,如果運行cmd.exe則進程可以看到cmd.exe。cmd是命令提示符(命令解釋器),32位支持長文件名,中文 。cmd是進入控制臺。
而COMMAND.COM是用ntvdm虛擬出來的一個16位的dos環(huán)境.同樣也是基于命令行的. 是一個16位的DOS應(yīng)用程序,它用于支持老的 dos應(yīng)用程序,它必須通過命令行輸入exit才可以退出,它一般運行于NTVDM中。如果用戶運行 command.com,用戶會在任務(wù)管理器中看到一個進程ntvdm.exe在運行。而且 command.exe還支持以前的16位的現(xiàn)在已經(jīng)不用的命令。command是WindowsXP中的16位DOS,不支持長文件名,不支持中文。command是純DOS系統(tǒng),執(zhí)行它后會建立一個全新的環(huán)境模式,(比如path=的設(shè)置就會有改變) 是運行在虛擬8086 模式的程序(可以看到進程中有個NTVDM出來了,這就是NT DOS 虛擬機),運行16位dos程序都會使用這個。16位程序都只支持8.3文件名(即文件名8個字符,擴展名3個字符),因此文件系統(tǒng)會保留兩個文件名,一個長文件名,一個短文件名以供16位程序用,事實上他們都指向同一個文件。command也不能顯示漢字,如果要顯示漢字,可以更改代碼頁為936(簡體中文),英文是437,用graftabl命令。用法 graftabl xxx 但是只能對應(yīng)于圖形模式下,在全屏幕狀態(tài)是無效的。
但就用戶來說,這兩個命令有驚人的相似之處,他們同樣都是運行環(huán)境,只是CMD更強大,雖然只能運行在NT內(nèi)核的windows中,而command只是一個虛擬出來的dos運行環(huán)境罷了,不過他也能運行很多東東,總之都有用,尺有所短,寸有所長。比較舊的系統(tǒng),如win95那些,就只有command而不存在cmd了。
另:debug程序可以用quit,或q命令退出。
另:用cmd和command分別調(diào)用debug,再用r命令查看各寄存器的值時發(fā)現(xiàn)段寄存器的初始值是不一樣的,比如在cmd下DS,ES,SS,CS為1382,在command下他們的值為14B1。而其他寄存器的值是一樣的。原因待查。
轉(zhuǎn)自[http://oojakioo.blog.163.com/blog/static/1239368132009725102254654/]
哈哈,由我這個小菜來解釋一下原因,CPU從何處執(zhí)行執(zhí)行指令,由代碼段寄存器CS和指令指針寄存器IP里里的內(nèi)容決定,它倆指向內(nèi)存單元的物理地址。
你看到不一樣,正說明了cmd.exe和command.com是兩個獨立的東東。
我目前還很菜,只能粗俗的解釋一下。就到這里,我繼續(xù)去看王爽大叔的《匯編語言》。真好看!