پردازش اسمبلي(تولید کد هدف که در واقع کد پویش هست)
اسمبلي دوگذريوظيفه يک اسمبلر آن است که کد منبع زبان اسمبلي را به کد هدف(کد پویش) تبديل نمايد.
مايکرو اسمبلر مايکروسافت يک اسمبلر دوگذري است. اين به آن معني است که يک برنامه منبع زبان اسمبلي دوبار به وسيله MASM
پويش ميشود تا فايل کد هدف آن ايجاد شود. ميتوان يک اسمبلر را به صورت يک گذري طرح کرد و بعضي اسمبلرها برنامه منبع را سه بار يا بيشتر پويش ميکنند اما بيشتر اسمبلرها از دو گذر بهره ميبرند.
يک مزيت نوشتن برنامه به زبان اسمبلي نسبت به زبان ماشين آن است که در آن ميتوان از شناسهها يا نمادها براي رجوع به دادهها در سگمنت داده و دستورالعملها در سگمنت کد استفاده نمود.
يک وظيفه اسمبلر آن است که يک جدول علائم در ارتباط با هر شناسه با مشخصههاي مختلف را تشکيل داده و آن را حفظ کند. يک مشخصه برابر نوع يک نماد است.
اين انواع شامل موارد زير ميباشد:برچسب دادهها و دستورالعملها
نمادهايي که مساوي ثباتها درنظر گرفته شدهاند
اسامي روالها
اسامي ماکروها
اسامي سگمنتها
چنانچه نمادي مربوط به داده يا دستورالعمل باشد، آنگاه موقعيت آن در جدول علائم وارد ميشود. اسمبلر داراي يک شمارنده موقعيت است که اين مقدار را محاسبه ميکند. معمولاً در يک اسمبلر شمارنده موقعيت در ابتداي برنامه يا در ابتداي بخشهاي مهمي از برنامه، صفر ميگردد.
چنانچه اسمبلر بخواهد از اين قاعده پيروي کند که دادهها قبل از دستورالعملهاي اجرايي بايد مشخص باشند، آنگاه جدول علائم وروديهايي را براي دادهها در حين گذر اول در نظر ميگيرد. ممکن است بدين ترتيب به نظر برسد که اسمبلي يک گذري ساده است. البته در چنين مواردي پرش به دستورالعملهاي اجرايي جلوتر با مشکلاتي مواجه خواهد شد.
اسمبلرهاي مختلف مقدار کار متفاوتي را در حين گذر اول انجام دهند. بعضي براي ايجاد جدول علائم فقط از شمارنده موقعيت استفاده مينمايند. بعضي ديگر در حين گذر اول هم جدول علائم را ايجاد ميکنند و هم کد هدف تقريباً کاملي را توليد مينمايند. ماکرو اسمبلر مايکروسافت جزء دسته دوم است.
وظيفه اصلي يک اسمبلر، توليد کد هدف
(کد پویش) است. البته اسمبلرها کارهاي بسيار زياد ديگري را نيز انجام ميدهند. يک وظيفه، ذخيره کردن فضا است. اسمبلر علاوه بر ذخيره کردن حافظه ميتواند فضاي ذخيره شده را با مقادير معيني مقداردهي کند.
اکثر اسمبلرها ميتوانند فايل ليست را توليد کنند، اين فايل کد منبع اصلي را بهمراه کد هدف مربوطه عرضه ميکند. مسئوليت ديگر يک اسمبلر آن است که وقتي اشتباهي در کد منبع وجود دارد پيغامهاي خطا را توليد کند. اسمبلرهاي اوليه فقط براي هر اشتباه فقط شماره خط و کدخطا را نمايش ميدادند. نسلهاي بعدي اسمبلرها يک صفحه مجزا با شماره خط و پيغام خطا ايجاد ميکردند. اکثر اسمبلرها ميتوانند پيغام خطا را در فايل ليست در محلي که خطا وجود دارد قرار دهند. ماکرو اسمبلر مايکروسافت پيغام خطا را در فايل ليست قرار ميدهد و آنها را برروي صفحه نمايش نيز نمايش ميدهد.
علاوه بر ليستي که برنامه منبع و کد هدف را نشان ميدهد، اغلب اسمبلرها ميتوانند ليست علائم مورد استفاده در برنامه را نيز توليد نمايند. چنين ليستي ممکن است اطلاعاتي را درباره مشخصه هر نماد و همينطور جدول ارجاع را که مشخص کننده خطي است که يک نماد در آنجا تعريف شده است و خطوطي که به آن رجوع کردهاند، در برگيرد.
ماکرو اسمبلر مايکروسافت يک اسمبل دوگذري است. اين اسمبلر قادر است کدهاي هدفي را ايجاد کند که به محلهايي در فايلهاي ديگر رجوع نمايند و همينطور حاوي علائمي باشد که قابل جابجايي ميباشند. برنامه کمکي LINK در MS-DOS فايلهايي را که داراي کدهاي هدف مجزا هستند دريکديگر ترکيب کرده و رجوع به فايلهاي ديگر را ممکن ميسازد. لودر MS-DOS که به طور خودکار با وارد کردن اسم فايل برنامه اجرايي صدا ميشود، قسمت نهايي کار ترجمه فايل را انجام ميدهد، يعني قبل از آمادهسازي اجرا آن را در درون حافظه بار ميکند.
برگرفته از : jozve-computer.blogfa.com