DOS下COM檔案和EXE檔案的比較

來源:互聯網
上載者:User

【來源】http://www.cnsharenet.com/DOS/f/dft/dexecom.htm

    COM檔案是一種可執行程式的記憶體映象檔案,它與只有16位地址線的8位機上的CP/M作業系統下的可執行程式結構相似。在COM程式執行過程中,除了調用DOS功能和 ROM BIOS功能,以及使用者特意安排外,段寄存器一般不發生變化。四個段寄存器具有同樣的內容,都指向PSP,因此程式的大小仍限於64k以內。COM檔案的入口必須是100H,而EXE檔案可以有多個段。其中CS和SS以及IP和SP在程式裝入時由DOS根據檔案頭中的資訊初始化,ES和DS則指向PSP。EXE檔案除了程式本身外,還要包括檔案頭(512位元組的整數倍),因而所佔磁碟空間大一些,裝入也慢一些,但程式大小不受限制。EXE檔案用debug修改後,無法直接寫回磁碟上去。

COM檔案和EXE檔案的比較
比較項 COM程式 EXE程式
最大尺寸 65536位元組減PSP的256位元組以及堆棧的2位元組 沒有限制
入口 PSP:100H 由END語句的參數指
定包含入口的程式碼片段
入口CS PSP 入口在所在段中的位移
入口IP 100H PSP
進入時的DS PSP PSP
進入時的ES PSP 具有STACK屬性的段
進入時的SS PSP 具有STACK屬性段的長度
進入時的SP 0FFFEH或離高允許使用記憶體高端-2 初始化或未初始化
進入時堆棧 壓入一個值為0的字 由具有STACK屬性的段定義
堆棧大小 65535位元組減PSP長度(256位元組)減可執行碼長度 NEAR或FAR
子程式調用 NEAR 建議用 INT 21H 的 4CH
退出方法 建議用 INT 21H 的 4CH 也可用 near RET 或 INT20H 如果使用者已做了初始化
也可用 far RET
檔案長度 程式本身長度 程式長度加檔案頭
(512位元組的整數倍)

一、相同點
二者都是DOS下的可執行檔。.COM檔案是可執行檔二進位代碼檔案,.EXE檔案是可執行檔浮動代碼檔案。
二、不同點
(1).COM檔案一般比較小,其大小不能超過64KB,而.EXE檔案一般比較大,可以超過64KB。
(2).COM檔案裝入記憶體較快,而.EXE檔案較慢。
(3).COM檔案一般比較簡單,.EXE檔案則比較複雜,編寫的難度較大。
(4).COM檔案在執行時段寄存器含有相同的值,即代碼、資料等混合在一起,而.EXE檔案在執行時段寄存器含有不同的值,即代碼、資料等駐留在不同的段中。
(5)駐留在磁碟上的.COM檔案既無檔案頭也沒有任何其它的內部標識資訊,而駐留在磁碟上的.EXE檔案有一個檔案頭(也稱作控制資訊塊)、一個重定位元影像以及DOS使用的其它資訊。
(6)對.COM檔案來說,DOS的裝入程式不能為其執行段重定位,而對.EXE檔案來說,其執行段可以被重定位。
(7).COM檔案只能有一個段,而.EXE檔案可以有一個以上的段。
(8).COM檔案不能有段堆棧,.EXE檔案則可以有。 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.