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

كسب ‌‌ديدگاه‌ ‌‌برای برنامه نویسی با زبان اسمبلی

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

هر كس براي آن كه بتواند از آنچه در ذهن به عنوان يك نرم‌افزار دارد طراحي خوبي داشته باشد، بهتر است كه درك صحيح و نسبتا كاملي از كاركرد رايانه و منطق آن داشته باشد و با اجزاي سيستم و منابع مورد نياز و نيز منابعي كه در اختيار است آشنا باشد.

پردازنده
پردازنده كه در واقع مهم‌ترين بخش و اصلي‌ترين منبع سخت‌افزاري سيستم است، به واحد پردازش مركزي يا CPU معروف است. درون CPU دو بخش عمده وجود دارد كه به واحد محاسبه و منطق و واحد كنترل معروف است.
همان‌طور كه از نام اين واحدها مشخص است، تمامي كارهاي محاسباتي در واحد محاسبه و منطق انجام مي‌گيرد و واحد كنترل، بخشي است كه به واحد محاسبه و منطق نظارت دارد و امور آن را كنترل مي‌كند. در كنار اين 2 واحد، حافظه‌هاي كوچك و بسيار سريعي به نام ثبات (register) قرار دارند كه كار نگهداري موقت داده‌ها را به عهده دارند.
هر پردازنده تعداد مشخص و انواع معيني ثبات دارد كه وظيفه هر يك از آنها مشخص است. اندازه ثبات‌ها نيز به نوع CPU بستگي دارد. به عنوان مثال، پردازنده‌هاي قديمي 8086, 8088,80286 پردازنده‌هايي بودند كه هم اندازه ثبات‌ها و هم اندازه گذرگاه‌هاي دروني آنها 16 بيت بود. پردازنده‌هاي 80386 و 80486 و پس از آن پردازنده‌هاي پنتيوم، ساختار 32‌بيتي دارند. پردازنده‌هاي 64‌‌بيتي نيز كه چند سالي است طراحي شده‌اند گوياي اندازه ثبات‌‌ها و گذرگاه‌هاي خود هستند. در مورد ثبات‌ها كمي جلوتر، بيشتر صحبت خواهيم كرد.
در كنار ثبات‌ها حافظه‌هاي ديگري هستند كه به پرچم (Flag) معروف هستند. هر Flag يك بيت است كه مي‌تواند مقدار صفر يا يك را بپذيرد.
البته پرچم‌ها هم به صورت يك ثبات درون CPU قرار دارند، اما مانند ثبات‌ها از آنها استفاده نمي‌شود. از ثبات‌ها معمولا به صورت واحدهاي حافظه 8، 16و 32 بيتي استفاده مي‌شود، اما پرچم‌ها به صورت بيت به بيت مورد استفاده قرار مي‌گيرند.

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

وظايف پردازنده
به طور كلي مي‌توان وظايف پردازنده را در 3 عمل خلاصه كرد:
1 -
واكشي‌
2 -
رمزگشايي
3 -
اجرا

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

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

ثبات‌ها
ثبات‌هاي داخل پردازنده به چند نوع تقسيم‌بندي مي‌شوند. يك سري از آنها به ثبات‌هاي عمومي معروف هستند كه از آنها براي ذخيره‌سازي موقت داده‌ها در هر نوع پردازش و محاسباتي استفاده مي‌شود و در به كارگيري آنها محدوديت خاصي وجود ندارد. اين ثبات‌ها در پردازنده‌هاي 16 بيتي AX ،BX،CX،DX نام دارند. ثبات‌هايي نيز وجود دارند كه به ثبات‌هاي كنترلي معروفند. ثبات پرچم و ثباتي به نام ‌ IP از اين دسته هستند. ثبات ‌ IP ياInstruction pointer حاوي آدرس محلي است كه براي تعيين آدرس دستور‌العمل بعدي به كار مي‌رود. ثبات‌هاي ديگري نيز به نام سگمنت (‌ (segmentو انديس ‌(index) وجود دارند كه توضيح كاربردهاي آنها بحث و زمان بيشتري مي‌طلبد و ما قصد نداريم در اينجا به تمام جزئيات بپردازيم.

Last changed: Aug 15 2009 at 6:06 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!