فایل COM چیست؟
فایل های COM به سادگی برای اجرای مجموعه ای از دستورات یا دستورالعمل ها استفاده می شوند. یک فایل COM شامل یک برنامه اجرایی است که می تواند از ویندوز یا MS-DOS اجرا شود. به همین ترتیب یک فایل EXE، فایل COM نیز در فرمت باینری ذخیره می شود، اما با فایل EXE متفاوت است، زیرا فاقد هدر یا متادیتا است و همچنین حداکثر اندازه آن تقریباً 64 کیلوبایت است. هنگامی که فایل COM برای اولین بار روی یک سیستم 32 بیتی اجرا می شود، از آن می خواهد که مؤلفه NT Virtual DOS Machine (NTVDM) را نصب کنید. فایل COM را می توان بر روی نسخه 64 بیتی ویندوز مایکروسافت با ماشین مجازی که از محیط MS-DOS پشتیبانی می کند، اجرا کرد.
فرمت فایل COM
فرمت فایل COM یک فرمت اجرایی باینری است که در ویندوز مایکروسافت یا MS-DOS استفاده می شود. ساختار آن فقط از مجموعه ای از دستورالعمل ها تشکیل شده است. بدون هدر و فاقد ابرداده استاندارد است. تمام داده ها و کدهای خود را فقط در یک بخش ذخیره می کند و باینری آن حداکثر 64 کیلوبایت حجم دارد. این فرمت فایل هنگام اجرای مجدد، خودش را تغییر نمی دهد. بنابراین سیستم عامل آن را در یک آدرس از پیش تعیین شده بارگذاری می کند. علاوه بر این، می توان یک فایل 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,'$'