هل تبحث عن شيئ معين في المدونة ؟ اكتب الجملة أو الكلمة التي تريد البحث عنها، واضغط Enter
اضف تعليق

اكتب عن أمن المعلومات والتحقيق الجنائي الرقمي | مدونة شخصية

كيفة البدء بتعلم لغة اسمبلي

ذكرت في تدوينة سابقة عن السمعة السيئة التي تحملها لغة اسمبلي بأنها لغة صعبة فما هي الطريقة الامثل لتعلم لغة اسمبلي ؟

اذا لم تكن قد قرأت التدوينة السابقة انصحك بقرائتها لن تاخذ الكثير من وقتك .

اولاً لماذا لغة اسبملي صعبة ؟

في الحقيقة هي لغة سهله وممتعة في نفس الوقت ولكن هناك بعض الاساسيات التي قد لا تكون عند الشخص المتعلم فيظن انها صعبة

المتطلبات :

  • لغة تهتم بالتفاصيل كثيرا فكل شي تقريبا تقوم بكتابته انت ,  اسمبلي لا تفعل اي شي من تلقاء نفسها كبايثون او جافا , كل شي تقوم به انت وهذا يعود لطبيعة عملها في المعالج لذلك افهم خطوات كل برنامج وتابع تغييرات ال registers و الذاكره ( لا تقلق اذا لا تعرف ما اقصده بـ registers بمجرد البدء بتعلم اللغه سوف تعرف كل شي)
  • يجب ان يكون لمتعلم لغة اسمبلي خلفيه في computer architecture اذا كنت طالب هندسة بالتاكيد هذه المادة مرت عليك ودرستها واحيانا يكون اسمها computer organisation واذا لم تكن طالب هناك العديد من الكتب كذلك الكورسات التي تشرح البنية الداخليه للمعالج والذاكره
  • لغة اسمبلي او بالاصح المعالج يتعامل بالـ binary و hexadecimal , يجب على المتعلم ان يكون ملم بالانظمه العديده بشكل جيد
  • يجب فهم بنية المعالج الذي سوف ينفذ التعليمات البرمجيه المكتوبه بلغة اسمبلي وهنا اقصد المعالج التي تعمل عليه في النقطه السابقه كنت اقصد ان تفهم النظري بشكل عام لبنية الحاسوب بغض النظر عن المعالج المخصص الذي سوف تعمل عليه بسبب ان التعليمات تختلف من معالج الى اخر ومن نظام تشغيل الى نظام تشغيل اخر

هذه بعض النقاط المهمه والتي في الاغلب غير موجوده عند المتعلمين الذين يحاولون تعلم لغة اسمبلي لذلك يجدونها صعبه . لا تقلق سوف اكتب هنا عن كيفية تعلم لغة اسمبلي بكل سلاسة وسهولة ان شاء الله

  • البدء بـ 8086

كما نعرف ان لغة اسمبلي لا تعتبر Portable اي انها لا تعمل على كل المعالجات , فاذا كتبت برنامج لعمارية معالج معين لن يعمل في معالج اخر .

اذا اردت ان تتعلم لغة اسمبلي وخاصة اذا كنت طالب وفي بداية مسيرتك في علوم الحاسوب والبرمجه لا تبدا ابدا بلغة اسمبلي التي لمعمارية 32bit او 64bit بسبب ان هذه المعمارية للمعالجات الحالية لديها العديد من التعليمات البرمجيه ونوعا ما سوف تكون صعبة في البداية . ابدا بمعمارية معالجات 8086 طول التعليمه 16bit هذه العائلة من المعالجات قديمه جدا وتقريبا اختفت الان وليس منها اي فائده كهاردوير ولكن التعليمات نفسها تم تطويرها الى حجم اكبر لذلك اذا تعلمت هذه التعليمات البسيطه سوف تكون الاساس لفهم التعليمات الاكثر تعقيدها لمعمارية 64bit على سبيل المثال , هناك العديد من الجامعات لازالت تستخدمها منها جامعتي في الهند تقوم بتدريس هذه المعمارية  بسبب انها سهله الفهم للطالب ويمكن استيعابها بالقليل من الجهد على خلاف عائلات المعالجات الحالية. اذا تعلمت اي معمارية وفهمت كيف يقوم المعالج بتنفيذ التعليمات المكتوبه باسمبلي لن تجد ابدا اي صعوبه للانتقال لمعمارية اعلى .

سبب اخر وهو نوعية البرنامج الذي سوف تتعلم فيه , لغة اسمبلي لها حالة خاصة بسبب ان البرنامج الذي نكتبه للتعامل مع المعالج يجب ان يكون هناك برنامج  يمكن من خلالها ان نتخاطب مع المعالج واغلب هذه البرامج والتي تسمى بـ assemblers تعمل من خلال سطر الاوامر وصعب ان تراقب تغييرات ال registers ( في الحقيقه ليس من الصعب عمل ذلك ولكن المبتدء يرهب عمل ذلك في البدايه)  انا شخصيا احب ان اضع قيم registers امامي كلها واتابع التغييرات اثناء تنفيذ التعليمات, هذا نوعا ما صعب في برامج تعمل من سطر الاوامر . في معمارية 8086 هناك emulator رائع جدا اسمه emu8086 يظهر لك اجزاء المعالج وييسهل الامر بشكل كبير جدا, انا لاحظت اني عندما كنت اشرح بعض البرامج لأصدقائي كانوا سعيدين جدا بهذا البرنامج بسبب سهولته على خلاف ماهو المتعارف مثل TASM , MASM , NASM وهذه كلها assemblers لكتابة اسمبلي وترجمتها للمعالج .

لا تقلق من كل هذه النوافذ فانا تعمدت ان افتحها كلها لكي ترى كم هو جميل وكل شي تراه امامك اثناء تنفيذ التعليمات البرمجية , بالعكس بعد ان تبدا تعلم اسمبلي سوف تعشق هذه النوافذ وهي السبب التي سوف تجعلك ان تتمسك بالبرنامج لسهولته .

  • الكتب

بعد ان قررت ان تبدا بمعمارية 8086 يتبقى المصدر الذي سوف نتعلم منه, سوف اذكر كتابين الكتاب الاول لمعمارية 8086 وبعض المعماريات ولكن المعمارية الرئيسية في الكتاب هي 8086 والكتاب رائع بكل ما تحمل الكلمة من معنى بسبب سهولته وطريقة الشرح الرائعه التي تجعل من اسمبلي ممتعه وانا اقترحت ان تبدا بـ 8086 بسبب ان تبدا بشي سهل وايضا بسبب هذا الكتاب,  اما الكتاب الثاني سوف تبدا بقرأته بعد ان تنتهي من الكتاب السابق وهو لمعمارية 32bit و 64bit  .

ملاحظة : بالنسبة للكتاب الاول هناك بعض الاجزاء من الكتاب التي ليس من الضروري ان تتعلمها فقط افهم الاسياسيات ثم انتقل للكتاب الثاني بعد ان يكون لك فكره عامه عن كيفيه كتابه برامج بسيطه بلغه اسمبلي . الاجزاء التي تركز عليها وهي 1,2,3,4,6,8,10,11,15,19

الكتاب الاول : x86 PC: Assembly Language, Design, and Interfacing, The, 5th Edition

الكتاب الثاني :  Assembly Language for x86 Processors, 7th edition by Kip Irvine

 

الخلاصة

لا تبدا مباشرة مع 32bit او 64bit ابدا بمعمارية بسيطه , تعلم على emulator يوضح لك كل صغيره وكبيره وكل register يريحك وتفهم الذاكره وتتبع البرنامج (tracing) , في الاخير اقرا الكتاب الثاني الي ذكرت وسوف تجد الامور اصبحت سهله جدا

3 تعليقات
  1. mohammedأبريل 17, 2017

    …Nice overview

  2. Anwarمايو 7, 2018

    شكرا بارك الله فيك

  3. ابن اليمنيوليو 24, 2018

    بارك الله بعلمك ونفعك به..سهلت لنا الصعب وألنت لنا الطريق

اضف تعليق