מהו קובץ COM?
קובצי ה-COM משמשים פשוט לביצוע קבוצה של פקודות או הוראות. קובץ COM מורכב מתוכנת הפעלה שניתן להפעיל מ-Windows או MS-DOS. כמו כן קובץ EXE, גם קובץ ה-COM נשמר בפורמט בינארי אבל הוא שונה מקובץ EXE כי אין לו כותרת או מטא נתונים וגם יש לו גודל מקסימלי של 64KB בערך. כאשר קובץ ה-COM פועל בפעם הראשונה על מערכת 32 סיביות, הוא מבקש להתקין את הרכיב NT Virtual DOS Machine (NTVDM). ניתן להפעיל את קובץ ה-COM בגרסת 64 סיביות של Microsoft Windows עם מכונה וירטואלית התומכת בסביבת MS-DOS.
פורמט קובץ COM
פורמט קובץ COM הוא פורמט הפעלה בינארי המשמש ב-Microsoft Windows או MS-DOS. המבנה שלו מורכב ממערכת הוראות בלבד; אין לו כותרת והוא אינו מכיל מטא נתונים סטנדרטיים. הוא מאחסן את כל הנתונים והקוד שלו בקטע אחד בלבד והבינארי שלו הוא בגודל מקסימלי של 64KB. פורמט קובץ זה אינו ממקם את עצמו כאשר מנסים להפעיל מחדש. אז מערכת ההפעלה טוענת אותו בכתובת מוגדרת מראש. יתרה מכך, ניתן לבצע קובץ COM לביצוע בשתי מערכות ההפעלה בצורה של בינארי שמן. אין תאימות ממשית ברמת ההוראה. ההוראות בנקודת הכניסה נבחרות להיות שוות בפונקציונליות אך שונות בשתי מערכות ההפעלה, וגורמות לתוכנית לפעול, לקפוץ לקטע של מערכת ההפעלה שנמצאת בשימוש. בעצם מדובר בשתי תוכנות שונות עם אותו הליך בקובץ בודד, שלפניהן קוד בוחר את זה לשימוש.
דוגמה לקובץ COM
בעת ביצוע קובץ COM, ההוראות נקראות מהבייט הראשון והן עוקבות אחריהן ברציפות עד למציאת ההוראות האחרונות. הנה דוגמה לקוד ASM:
[BITS 16] ;Set code generation to 16 bit mode
[ORG 0x0100] ;Set code start address to 0100h
[SEGMENT .text] ;Main code segment
mov ah, 9 ; DOS print string function
mov dx, hello
int 21h
;Exit to DOS
mov ah, 4ch
int 21h
[SEGMENT .data] ;Initialised data segment
hello: db 'Hello, .COM programmer!',13,10,'$'