بخش آموزش پارس تله کام
بازگشت به صفحه اصلی آموزش

برنامه نويسي اسمبلي،دسترسي به منابع‌سخت افزار و نرم افزار سيستم

Posted by بهروز حاتم (hatam) on Aug 14 2009
برنامه نويسي >>

بعد از زبان ماشين، زبان اسمبلي نزديك‌ترين زبان به زبان قابل فهم رايانه است و در واقع قديمي‌ترين زبان برنامه‌نويسي است. اين زبان قدرتمندترين زبان از نظر توانايي انجام كار است. اما از نظر سهولت برنامه‌نويسي، نسبت به ديگر زبان‌هاي برنامه‌سازي، در پايين‌ترين درجه قرار دارد.
براي برنامه‌نويسي به اين زبان، برنامه‌نويس بايد تا حد زيادي از ساختار فايل‌هاي اجرايي، ساختار و ساختمان داده‌هاي حافظه و طريقه دسترسي به آنها، سخت‌افزار، وقفه‌هاي سخت‌افزاري و نرم‌افزاري و... كه همگي از مفاهيم بنيادي يك رايانه هستند، اطلاع و آگاهي داشته باشد.
با استفاده از زبان اسمبلي مي‌توان به تمام منابع سخت‌افزاري و نرم‌افزاري دسترسي مستقيم داشت و به كليه نقاط حافظه دست يافت. برخي از ناحيه‌هاي مربوط به سيستم عامل، ناحيه‌هاي سيستمي و ممنوعه هستند كه توسط سيستم عامل رزرو مي‌شوند و زبان‌‌هاي برنامه‌نويسي مجاز به استفاده مستقيم از آنها نيستند، اما زبان اسمبلي هيچ گونه محدوديتي در اين زمينه ندارد. هر عملي با مسووليت برنامه‌نويس قابل انجام است و در صورت بروز اشكال يا هر مساله‌اي، اشكالي به هيچ كس جز برنامه‌نويس وارد نيست.
برنامه‌هاي نوشته شده با اسمبلي، به دليل نداشتن كد اضافه، بسيار سريع بوده و به عبارتي با نهايت سرعت ممكن در ماشين اجرا مي‌شوند. ضمن اين كه حجم فايل‌هاي ساخته شده نيز حداقل ميزان ممكن است.
برخلاف برنامه‌هاي ساخته شده با زبان‌هاي سطح بالا كه معمولا حجم آنها به نسبت زياد است، يك برنامه اسمبلي مي‌تواند امور زيادي را با حداقل ميزان كد انجام دهد.
به عنوان مثال، ممكن است يك برنامه نوشته شده با يك زبان سطح بالا كه قرار است دو عدد را با هم جمع كرده و نتيجه را در خروجي نمايش دهد، چيزي حدود 50 تا 100 كيلوبايت شود. زيرا كدهاي ديگري نيز به فايل اجرايي اين گونه زبان‌ها اضافه مي‌شود، اما معادل همين برنامه با زبان اسمبلي شايد به يك كيلوبايت هم نرسد. ضمنا برنامه‌هاي نوشته شده با اسمبلي، حافظه اصلي را نيز كمتر اشغال مي‌كنند.

وابستگي به CPU
زبان اسمبلي زباني است كه هر دستور آن معادل يك دستورالعمل CPU است. بنابراين هر خانواده از پردازنده‌ها، دستورات اسمبلي خاص خود را دارند. بنابراين زبان اسمبلي CPU ‌هاي اينتل با AMD متفاوت است.
درون هر CPU تعداد مشخصي ثبات (Register) وجود دارد. ثبات‌ها، حافظه‌هايي كوچك، گرانقيمت و بسيار سريع هستند كه مستقيما با پردازنده در ارتباطند و با سرعت CPU كار مي‌كنند. اگر ظرفيت و تعداد ثبات‌هاي CPU افزايش يابد، قيمت آن بسيار گران خواهد شد و خريد آن به صرفه نخواهد بود. بنابراين با همين تعداد محدود، برنامه‌نويسي انجام مي‌شود.
يك برنامه‌نويس اسمبلي به طور كامل حافظه اصلي و تعدادي از ثبات‌هاي CPU را در اختيار دارد و مي‌تواند با استفاده از آنها و به صلاح ديد خود، برنامه خود را طراحي و پياده‌سازي كند.

مراحل ساخت برنامه‌
يك برنامه اسمبلي در يك فايل متني و در يك ويراستار معمولي مثل Notepad نوشته مي‌شود. پس از آن كه برنامه به طور كامل نوشته شد به عنوان ورودي به نرم‌افزاري به نام اسمبلر ارسال مي‌شود. اسمبلر كد را بررسي مي‌كند و در صورتي كه خطايي در آن وجود نداشت، يك فايل با پسوند obj توليد مي‌كند.
محتواي اين فايل object code يا همان كدهاي زبان ماشين است. اين كدها هنوز قابل اجرا توسط ماشين نيستند و براي اجرا بايد به فايل اجرايي تبديل شوند. برنامه‌اي ديگر به‌نام پيوند دهنده (Linker) وجود دارد كه يك يا چند فايل obj را به عنوان ورودي گرفته و يك فايل اجرايي با پسوند exe توليد مي‌كند. اين فايلي است كه مي‌تواند مستقيما روي ماشين اجرا شود. فايل مربوط به پيوند دهنده معمولا فايلي به نام link.exe است. براي اسمبل كردن كدهاي برنامه نيز، نگارش‌هاي مختلفي از اسمبلرها وجود دارد كه دو نسخه معروف و پركاربرد آنها Masm و Tasm است.
Masm
يا Micro Assembler ، محصول شركت مايكروسافت و Tasm يا Turbo Assembler محصول شركت بورلند (Borland) است. گاهي برنامه‌هايي كه با يكي از اسمبلرها سازگار است، در ديگري با خطا مواجه مي‌شود كه با اندكي تغيير مي‌توان خطا را رفع كرد.
براي هر خانواده از پردازنده‌ها، يك نسخه اسمبلر مخصوص توسط شركت‌هاي سازنده عرضه مي‌شود و زبان‌هاي برنامه‌سازي سطح بالا كه روي رايانه‌هاي مختلف اجرا مي‌شوند، به هنگام ساخت فايل اجرايي بايد از اسمبلرهاي مخصوص آن پردازنده استفاده كنند.

Last changed: Aug 15 2009 at 6:07 PM

Back Drucken

آخرین مقالات

WAP چیست؟

کاربرد پراکسی در امنیت

حملات چیست؟ D.O.S

چگونه هکر خود را شناسايي کنيم ؟!

Spyware چيست؟

تروجان ها يا اسب هاي تراوا (Trojan Horse ) چیست؟

آموزش مفهوم مدل OSI

طريقه شبكه كردن دو رايانه به صورت مستقيم (2)

آموزش شبکه کردن 2 کامپیوتر بدون هاب

آموزش نصب و پیکر بندی SAMBA در Linux

آموزش نصب و پیکربندی squid در لینوکس

آموزش نصب و پیکر بندی سرور mail در لینوکس

Apache نصب و پبکربندی در لینوکس قسمت 1


راهنمای Gnome در ردهت ۹ بخش اول linux

آموزش KDE بخش سوم linux

آموزش KDE بخش دوم linux

آموزش KDE بخش اول

آشنایی با ویرایشگر ایمکس linux EMACS

نگاهی دقیق‌تر به فرایند خاموش شدن لینوکس linux

تمامی حقوق این مجموعه متعلق به پارس تله کام می باشد.
استفاده از مطالب این سایت فقط با ذکر نام و لینک دقیق پارس تله کام مجاز می باشد.

google!