هر برنامه شامل یک یا چند سگمنت است. هنگامی که برنامه دارد اجرا می شود ثبات های سگمنت به سگمنت های جاری اشاره می کنند. چهار سگمنت را در آن واحد می توان داشت؛ کد، داده، پشته و اضافی. در مد حقیقی هر سگمنت حداکثر ۶۴KB است. البته معمولا برنامه ها کمتر از ۶۴KB را استفاده می کنند. اسمبلر اندازه سگمنت را بر اساس تعداد بایت های مورد استفاده سگمنت تنظیم می کند. بنابراین اگر برنامه ای برای نمونه تنها ۱۰KB برای ذخیره داده نیاز دارد سگمنت داده ۱۰KB می شود نه ۶۴KB.
برنامه های .exe سه سگمنت اول را باید داشته باشند.
• سگمنت داده برای ذخیره متغیرهاست. آدرس متغیرها به صورت آفستی از شروع این سگمنت محاسبه می شوند.
• سگمنت کد شامل دستورالعمل های اجرائی برنامه است.
• سگمنت پشته برای نگهداری داده های موقتی و آدرس های برگشتی از برنامه پشته رزرو می شود. آدرس های پشته به صورت آفستی از ابتدای این سگمنت محاسبه می شوند.
وقتی اجرای برنامه آغاز می شود سیستم عامل دو ثبات سگمنت CS و SS را برای اشاره به کد برنامه و سگمنت پشته مقداردهی می کند. برای دسترسی به سگمنت داده ثبات ds باید حاوی آدرس سگمنت داده باشد. قبل از دسترسی به هر داده ای برنامه باید آدرس سگمنت را در ثبات DS ذخیره کند.
سگمنت ها در برنامه اسمبلی توسط راهنماهای segment و ends مشخص می شوند. یک سگمنت به فرم کلی زیر مشخص می شود:
segmentname segment {READONLY} {align} {combine} {use} {‘class’}
<statements>
segmentname ends
segmentname شناسه ای است که نام سگمنت معین می کند. نام سگمنت برای بدست آوردن آدرس آنها توسط اسمبلر استفاده می شود. نام سگمنت باید در راهنمای ends هم مشخص شود.
align می تواند یکی از کلمات byte، word، dword، para یا page باشد. این پارامتر مشخص می کنند سگمنت در محدوده بایت، کلمه، کلمه مضاعف، پاراگراف یا صفحه بار شود. اگر بایت باشد سگمنت از اولین بایت آزاد بعد از آخرین سگمنت ذخیره می شود. این فیلد می تواند حذف شود. پیش فرض پاراگراف است. پاراگراف مضربی از ۱۶ بایت است.
فیلد combine ترتیبی را که سگمنت های هم نام در فایل مقصد توسط اسمبلر نوشته می شوند را کنترل می کند و می تواند یکی از کلمات public، stack، common یا memory باشد. نوع stack برای سگمنت های پشته و public برای بقیه سگمنت ها استفاده می شود.
مثال.
DSEG segment
Item1 byte 0
Item2 word 0
DSEG ends
CSEG segment
mov AX, 10
add AX, Item1
ret
CSEG ends
هرزمان نام سگمنت به عنوان عملوند دستوری بکار برود اسمبلر بلافاصله آدرس سگمنت را جایگزین می کند.
مثال. دستور زیر آدرس سگمنت داده را در ثبات DS قرار می دهد.
mov AX, dseg ;Loads AX with segment address of dseg.
mov DS, AX ;Point ds at dseg.
راهنماهای .stack، .data و .code راهنماهای ساده شده سگمنت هستند که محل شروع سگمنت های پشته، داده و کد را مشخص می کنند. راهنمای .stack فضائی را برای پشته برنامه رزرو می کند. اندازه پشته در مقابل آن ذکر می شود. پیش فرض مقدار پشته ۵۱۲ بایت درنظر گرفته می شود.
سگمنت ها به ترتیبی که در برنامه تعریف شده اند در حافظه بار می شوند.