.COM是Dos可執行檔案的一種格式,不需要重定位,最大65280位元組。 當然你把.exe該成.com也可以執行的。它包含程式的一個絕對映象―――就是說,為了執行程式準確的處理器指令和記憶體中的資料,MS-DOS透過直接把該映象從檔案複製到記憶體而載入.COM程式,它不作任何改變。為載入一個.COM程式,MS-DOS首先試圖分配記憶體,因為.COM程式必須位於一個64K的段,所以.COM檔案的大小不能超過65,024(64K減去用於PSP的256位元組和用於一個起始堆疊的至少256位元組)。如果MS-DOS不能為程式、一個PSP、一個起始堆疊分配足夠記憶體,則分配嘗試失敗。否則,MS-DOS分配儘可能多的記憶體(直至所有保留記憶體),即使.COM程式本身不能大於64K。在試圖執行另一個程式或分配另外的記憶體之前,大部分.COM程式釋放任何不需要的記憶體。分配記憶體後,MS-DOS在該記憶體的頭256位元組建立一個PSP,如果PSP中的第一個FCB含有一個有效驅動器識別符號,則置AL為00h,否則為0FFh。MS-DOS還置AH為00h或0FFh,這依賴於第二個FCB是否含有一個有效驅動器識別符號。建造PSP後,MS-DOS在PSP後立即開始(偏移100h)載入.COM檔案,它置SS,DS和ES為PSP的段地址,接著建立一個堆疊.為建立一個堆疊,MS-DOS置SP為0FFFEH,若已分配了至少64K記憶體;否則,它置暫存器為比所分配的位元組總數大2的值.最後,它把0FFFEH推進棧(這是為了保證與在早期MS-DOS版本上設計的程式的相容性)。MS-DOS透過把控制傳遞偏移100h處的指令而啟動程式.程式設計者必須保證.COM檔案的第一條指令是程式的入口點。注意,因為程式是在偏移100h處載入,因此所有程式碼和資料偏移也必須相對於100h.組合語言程式設計者可透過置程式的初值為100h而保證這一點(例如透過在原程式的開始使用語句org 100h). 於 EXE 檔案比較 : .com檔案就是隻含一個程式碼段的指令程式 .exe檔案可包含多個程式段,如:程式碼段,資料段,堆疊段等 .com檔案只能作一些簡單的DOS指令操作 .exe檔案應用廣泛,可作為各類程式的程式檔案 .com檔案大小不能超過64K .exe檔案大小沒有限制
.COM是Dos可執行檔案的一種格式,不需要重定位,最大65280位元組。 當然你把.exe該成.com也可以執行的。它包含程式的一個絕對映象―――就是說,為了執行程式準確的處理器指令和記憶體中的資料,MS-DOS透過直接把該映象從檔案複製到記憶體而載入.COM程式,它不作任何改變。為載入一個.COM程式,MS-DOS首先試圖分配記憶體,因為.COM程式必須位於一個64K的段,所以.COM檔案的大小不能超過65,024(64K減去用於PSP的256位元組和用於一個起始堆疊的至少256位元組)。如果MS-DOS不能為程式、一個PSP、一個起始堆疊分配足夠記憶體,則分配嘗試失敗。否則,MS-DOS分配儘可能多的記憶體(直至所有保留記憶體),即使.COM程式本身不能大於64K。在試圖執行另一個程式或分配另外的記憶體之前,大部分.COM程式釋放任何不需要的記憶體。分配記憶體後,MS-DOS在該記憶體的頭256位元組建立一個PSP,如果PSP中的第一個FCB含有一個有效驅動器識別符號,則置AL為00h,否則為0FFh。MS-DOS還置AH為00h或0FFh,這依賴於第二個FCB是否含有一個有效驅動器識別符號。建造PSP後,MS-DOS在PSP後立即開始(偏移100h)載入.COM檔案,它置SS,DS和ES為PSP的段地址,接著建立一個堆疊.為建立一個堆疊,MS-DOS置SP為0FFFEH,若已分配了至少64K記憶體;否則,它置暫存器為比所分配的位元組總數大2的值.最後,它把0FFFEH推進棧(這是為了保證與在早期MS-DOS版本上設計的程式的相容性)。MS-DOS透過把控制傳遞偏移100h處的指令而啟動程式.程式設計者必須保證.COM檔案的第一條指令是程式的入口點。注意,因為程式是在偏移100h處載入,因此所有程式碼和資料偏移也必須相對於100h.組合語言程式設計者可透過置程式的初值為100h而保證這一點(例如透過在原程式的開始使用語句org 100h). 於 EXE 檔案比較 : .com檔案就是隻含一個程式碼段的指令程式 .exe檔案可包含多個程式段,如:程式碼段,資料段,堆疊段等 .com檔案只能作一些簡單的DOS指令操作 .exe檔案應用廣泛,可作為各類程式的程式檔案 .com檔案大小不能超過64K .exe檔案大小沒有限制