com[DOS可執行命令檔案]

COM是Component Object Model (組件對象模型)的縮寫。COM是微軟公司為了計算機工業的軟體生產更加符合人類的行為方式開發的一種新的軟體開發技術。在COM構架下,人們可以開發出各種各樣的功能專一的組件,然後將它們按照需要組合起來,構成複雜的套用系統。由此帶來的好處是多方面的:可以將系統中的組件用新的替換掉,以便隨時進行系統的升級和定製;可以在多個套用系統中重複利用同一個組件;可以方便的將套用系統擴展到網路環境下;COM與語言,平台無關的特性使所有的程式設計師均可充分發揮自己的才智與專長編寫組件模組;等等。Microsoft的許多技術,如ActiveX, DirectX以及OLE等都是基於COM而建立起來的。並且Microsoft的開發人員也大量使用COM組件來定製他們的應用程式及作業系統。

基本信息

介紹

.com為 DOS可執行命令檔案(DOS Command File),一般小於64KB

區別

com和exe檔案的區別

以COM為擴展名的檔案的特點如下:

1.程式只能設定一個段,且不建立堆疊段;

2.程式的長度必須少於64K位元組;

3.程式必須預留100H空間,開始處是一條可執行指令;

4.程式被裝入的起始標號必須由END語句說明開始地址;

5.程式中的子程式必須具有進程屬性(NEAR);

6.如果COM檔案是由幾個不同的目標模組連結生成的,要求所有目標模組具有同一代碼段名和類別名(CLASS),且賦予公共屬性(PUBLIC),而主模組應具有100H的入口指針並優先連線。

EXE檔案的結構特點如下:

1.程式允許建立若干不同名的代碼段、數據段、堆疊段或附加段。

2.程式的長度僅受當前記憶體可用空間的限制。

3.程式的入口隨套用而定,只需起始標號與END語句說明的起始地址一致。

4.程式中的各個子程式的屬性隨段內或段間調用而定為NEAR或FAR。

5.連線生成EXE檔案的各個不同的目標模組內的代碼段,數據段或附加段可取同名或獨立命名。但要求只有主模組的END語句指出程式入口的起始標號,並至少有一個具有STACK屬性的堆疊段

檔案概要

.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為0000h,若已分配了至少64K記憶體;否則,它置暫存器為比所分配的位元組總數大2的值.最後,它把0000h推進棧,這是為了保證與在早期MS-DOS版本上設計的程式的兼容性. MS-DOS通過把控制傳遞偏移100h處的指令而啟動程式.程式設計者必須保證.COM檔案的第一條指令是程式的入口點. 注意,因為程式是在偏移100h處載入,因此所有代碼和數據偏移也必須相對於100h.彙編語言程式設計者可通過置程式的初值為100h而保證這一點(例如通過在原程式的開始使用語句org 100h).

相關詞條

熱門詞條

聯絡我們