فصل چهارم تا پایان فصل هشتم برنامه نویسی به زبان اسمبلی

 

برنامه نویسی به زبان اسمبلی

یک توضیح با یک کارکتر سمیکالن شروع شده وهر جا که نوشته شود اسمبلر فرض می کند که

تمام کارکترهای سمت راست آن تا انتهای خط، توضیحات محسوب می شوند.

چون یک توضیح فقط در لیست یک برنامه اسمبل ظاهر شده وهیچ کد ماشینی را تولید نمی کند

می توانید بدون اینکه تاثیری در اندازه برنامه و زمان اجرای آن داشته باشد هر تعداد از توضیحات

را در داخل یک برنامه بگنجانید.

می باشد. Comment روش دیگر برای نوشتن توضیحات، استفاده از دستورالعمل

کلمات رزو شده

که اعمالی می باشد که کا مپیوتر می تواند اجرا کند،دستورات ADD , MOV دستورالعملها مانند

که برای ارائه اطلاعاتی به اسمبلر مورد استفاده قرار می گیرند SEGMENT یا END اسمبلر مانند

که در عبارات مورد استفاده قرار می گیرند و نمادهای از پیش تعریف SIZE,FAR عملکردها نظیر

که اطلاعات را به برنامه شما برمی گرداند. در صورتی که از کلمات Model , Data شده مانند

رزرو شده برای منظورهای دیگر استفاده شود اسمبلر یک پیغام خطایی را تولید می کند.

شناسه ها

می باشند: (label) دو نوع شناسه ها نام و بر چسب

١. نام به آدرس یک داده اشاره می کند.

در MAIN ٢. برچسب ، به آدرس یک دستورالعمل روال یا سگمنت اشاره می کند، مانند

MAIN PROC FAIR : دستورالعمل زیر

قوانین یکسانی برای نام ها و بر چسب ها ، مورد استفاده قرار می گیرد. یک شناسه می تواند از

کاراکتر های زیر استفاده کند.

Z تا Q و Z تا A - حروف الفبا

- ارقام 0 تا 9 (نباید اولین کاراکتر یک رقم باشد.)

- کاراکتر های ویژه علامت (؟) خط زیرین (-) علامت ($) کاراکتر(@)

نقطه ( ٠) ( نباید اولین کاراکتر باشد)

(state ments) احکام

یک برنامه اسمبلی دارای مجموعه ای از احکام می باشد. دو نوع از احکام عبارتند از:

که اسمبلو آنها را به کد هدف ترجمه می کند. ADD,MOV ١.دستورالعملهای مانند

که به اسمبلر می گویند که عمل معینی مانند تعریف یک قلم داده را (directives) ٢.دستورات

انجام دهد.

فالب یک حکم در اینجا آمده است که کروشه ها یک عامل اختیاری را نشان می دهند.

Title,Page دستورات

اسمبلر برای کنترل فرم لیست یک برنامه اسمبل شده به کار می روند هدف Title,Page دستورات

این دو دستور همین بوده وهیچ تاثیری روی اجرای بعدی یک برنامه ندارند.

اسمبلر ، تعداد ماکسیمم خطوط برای لیست کردن در Page در ابتدای یک برنامه ، دستور : Page

یک صفحه و ماکسیمم تعداد کاراکترهای روی یک خط را نشان می دهد.

Page { شکل کلی: { پهنا} {طول

ممکن است بخواهید که درفایل لیست برنامه یک صفحه در خط مشخصی مانند انتهای یک

را بدون Page سگمنت به اول صفحه بعدی پرش کند برای این کار در خط مورد نیاز دستور

عملوندی را بنویسید.

اسمبلر استفاده کرده و عنوان یک برنامه را در خط دوم در هر Title می توانید از دستور : Title

صفحه از لیست برنامه چاپ کنید.

اسمبلر SAGMENT دستور

دارای یک یا چند سگمنت می باشد. یک سگمنت پشته که EXE یک برنامه اسمبلی در قالب

حافظه پشته را تعریف کرده، یک سگمنت داده ها که اقلام داده ها را تعریف کرده و........

segments , : دستورات اسمبلری که برای تعریف یک سگمنت بکار می روند عبارتند از

و دارای قالب زیر می باشد. ENDS

توضیحات عملوند عمل نام

نام segment و پارامترها Begin segment

نام ENDS و End segment

(align) عملوند یک دستور سگمنت می تواند دارای سه نوع پارامتر باشد: تنظیم

که در قالب زیر نوشته می شوند : (class) ورده (combine). ترکیب

نام segment "رده" ترکیب تنظیم

نوع تنظیم: پرامتر تنظیم مرزی را نشان می دهد که سگمنت از آنجا شروع خواهد شد.اگر نوع تنظیم

باشد، سگمنت مزبور روی مرز پراگراف تنظیم می شود، به این معنی که آدرس شروع PARA برابر

10 بخش پذیر بوده. H آن بر ١۶ یا

در نظر می گیرد. para ، اگر از پارامتر تنظیم چشم پوشی کنید اسمبلر بطور پیش فرض

نوع ترکیب: پارامتر ترکیب نشان می دهد که این سگمنت را با سگمنت های دیگرپس از اسمبل

public , common , stack : شدن در مرحله لینک ترکیب کنند.انواع ترکیب عبارتند از

برای مثال، سگمنت پشته معمولا به صورت زیر تعریف می شود. AT و عبارت

نام Sgment PARA stack

اگر بخواهید برنامه های اسمبل شده جداگانه رادر موقع لینک کردن، ترکیب کنید می توانید

استفاده کنید،در غیر این صورت، اگر یک برنامه قرار نیست با برنامه های common , poblic از

را بنویسید. none دیگر ترکیب شود، باید این پارامتر راحذف کرده و یا کلمه

که در داخل دو آپوستروف ( ) قرار می گیرد ، برایگروه بندی (calss) نوع رده:پارامتر رده

‘code’ سگمنتهای مرتبط در هنگام لینک کردن مورد استفاده قرار می گیرد. این کتاب از رده های

برای ‘stack’ برای سگمنت داده ها و ‘data’ ، ( برای سگمنت کد (توسط میکروسافت معرفی شده

سگمنت پشته استفاده می کند.

PROC دستور

سگمنت که حاوی کد قابل اجرای یک برنامه می باشد که از یک یا چند روال تشکیل می شود که

تعریف می شوند. PROC با دستور

ASSVME دستور

برای آدرس دهی سگمنت داده DS برای آدرس دهی پشته ، از ثبات SS از ثبات EXE یک برنامه

برای آدرس دهی سگمنت کد استفاده می کند. CS ها و از ثبات

در اینجا ، باید هدف از هر سگمنت برنامه را به اسمبلر اطلاع دهید. دستور مورد نیاز برای این کار

می باشد که در سگمنت کد به صورت زیر نوشته می شود. ASSVME دستور

عملوند عمل

ASSVME ss : و نام پشته DS : و نام سگمنت داده CS: نام سگمنت کد

مرتبط کند ss به این معنی است که اسمبلر باید نام سگمنت پشته را با ثبات ss : عملوند نام پشته

وبه روش مشابه برای عملوندهای نشان داده شده دیگر عمل می کند. عملوندها می توانند به هر

به صورت نام سگمنت داده ES می تواند دارای یک عامل نیز برای ASSVME ترتیبی ظاهر شوند

باشد. ES : ها

استفاده نمی کند،می توانید از رجوع به آن صرفنظر کرده ویا عملوند ES اگر برنامه شما از ثبات

را وارد کنید. ES:nothing

فقط پیغامی است تا اسمبلر در تبدیل کد نمادی به کد ASSVME، همانند سایر دستورات اسمبلر

ماشین کمک کند وهنوز ممکن است مجبور باشید که دستوراتی را بنویسید که بطور فیزیکی

آدرسهایی را در ثباتهای سگمنت در زمان اجرا قرار دهید.

END دستور

به یک روال خاتمه می ENDP به یک سگمنت ودستور ENDS همانطور که قبلا ذکر شد، دستور

به کل برنامه خاتمه داده وبه عنوان آخرین دستور در یک برنامه ظاهر می END دهند. یک دستور

شود قالب کلی آن به صورت زیر است. عملوند عمل

END [procname]

اگر قرار نیست برنامه اجرا شود، عملوند می تواند خالی باشد،برای مثال، ممکن است بخواهید که

فقط تعارف داده ها را اسمبل کرده و یا ممکن است بخواهید که برنامه را با یک ماژول دیگری

معرفی شده به PROC لینک کنید. در بسیاری از برنامه ها این عملوند شامل نام اولین و یا تنها

می باشد که اجرای برنامه قرار است از آنجا شروع شود. FAR صورت

دستورالعملهای مقدار دهی اولیه یک برنامه

psp را برای اجرا از دیسک به درون حافظه می خواند یک EXE وقتی بار کننده برنامه یک برنامه

بطول ٢۵۶ بایت روی مرز پاراگراف در داخل حافظه ساخته وبلافاصله برنامه را به دنبال آن ذخیره

می کند. سپس بار کننده کارهای زیر را انجام می دهد:

بار می کند. CS -آدرس سگمنت کد را در

را در ثباتها. psp بار کرده و آدرس ss -آدرس پشته را در

دستورات ساده شده سگمنت

اسمبلر برخی راههای میان بر در تعریف سگمنت ها را ارائه می دهد. برای استفاده کردن از آنها

باید قبل تعریف هر سگمنت،مدل حافظه را مقدار دهی کنید.قالب کلی به صورت زیر می باشد.

.MODEL مدل حافظه

باشد نیازهای هر مدل عبارتند از: large , compact,medium,small,tiny مدل حافظه می تواند

تعداد سگمنتهای داده تعداد سگمنتهای کد مدل

Tiny * *

small ١ ١

medium ١ بیش از ١

compact ١ بیش از ١

/ 0 نظر / 92 بازدید