الدرس 3 : لغة الأسمبلي

samir29

المدير العام
طاقم الإدارة
إنضم
14 أبريل 2020
المشاركات
445
مستوى التفاعل
558
النقاط
188
الإقامة
الجزائر
الدرس 3 : لغة الأسمبلي
لغة الأسمبلي(Assembly)

1593471835990.png

كما ذكرنا في الدرس السابق أن الهندسه العكسيه تعتمد بالأخص على إتقان لغة الأسمبلي لذا درسنا اليوم سينحصر في تعريف لغة الأسمبلي والسبب لتعلم هذه اللغه و العلاقة بين الأسمبلي واللغات الأخرى و تطبيقات لغة الأسمبلي نترككم الآن مع الشرح.

في قديم الزمان، وفي بداية ظهور الكمبيوتر كانت برمجة الكمبيوتر تتم بواسطة لغة الآلة Machine L anguage أختصاراً ML ( لغة الآله هي اللغه التي تفهمها الآلة مباشرة دون الحاجة إلى تفسير وهي تخزن بصورة ثنائبة [ تركيبة من الأصفار والواحدات] في الذاكرة على شكل تعليمات ووسائط تأخذ كل واحد منها عادة مقدار 8بت=ا بايت ) وكان هذا النوع من البرمجة صعب جداً.

عندها طور المبرمجون أول لغة برمجة وهذه اللغة فكرتها بسيطة جداً حيث أنه بدلاً من أن تكتب رموز الآلة، يتم كتابة كلمات مختصره تدل على نوع العملية مثال ( MOV,ADD,CMP )، ثم ببرنامج بسيط يتم تحويل هذه الشفرة إلى لغة الآلة بأستخدام تخطيط واحد-إلى-واحد أي أن كل سطر أو عبارة في الأسمبلي تحول إلى تعليمة واحدة مقابلة في لغة الآلة (مثال بدل كتابة 011000000000101 يتم كتابة mov al,5 )، يعرف البرنامج الذي يقوم بعملية التحويل بالأسمبلر Assembler ، علماً بأن هناك عدة أنواع من الأسمبلر كل نوع يختص بتقنية معينة وبعائلة معينه من المعالجات.

ونحن هنا بصدد تعلم البرمجة بالأسمبلي للمعالجات المبنية على تقنية IBM-PC والمنتجة من شركة أنتل وهي العائلة 86×80 ويرمز لها أختصاراً X86 وهي تضم :

( 8086 / 8088 / 80186 / 80286 ) لمعالجات ال 16 بت و ( 80386 / 80486 / 80586=بنتنيوم1 / 80686=بنتنيوم2 / 80786=بنتنيوم3 / 80886=بنتنيوم4 ) لمعالجات ال 32 بت وسوف أتطرق في دروس متقدمة الى المعالج أتنيوم 64 بت المبني بتقنية جديده كلياً لمن يرغب بمعرفة مسبقة لهذا المعالج الجديد كذلك سوف أتطرق بأذن الله الى الكروس أسمبلر وهي مجموعة برامج خاصة مصممه للتحويل من لغة أسمبلي لعائلة معالجات معينة الى عائله أخرى .

تعريف لغة الاسمبلي:
الأسمبلي هي لغة برمجة تتكون من سلسلة من التعليمات المتتابعة كل تعليمة فيها تحول إلى تعليمة مقابلة بلغة الآلة .

تعريف الاسمبلر:
الأسمبلر هو برنامج يقوم بتحويل التعليمات المكتوبة بلأسمبلي إلى لغة الآلة .

لماذا أريد أستخدام الأسمبلي ؟

بتعلمك لغة الأسمبلي فإنك تكشف النقاب عن الأسرار المختفية وراء الكمبيوتر، وتصبح قادراً على الفهم تماماً كيف يعمل المعالج وكيف يعمل البرنامج وبذلك تزيد خبرتك كمبرمج، وبالطبع فإن الأسمبلي أقوى من اللغات العالية المستوى في التعامل مع العتاد وتعطيك مرونة عالية وقدرة وصول إلى أشياء لم تكن تستطيع الوصول إليها من قبل ، كذلك هناك نوعيات من البرامج لايمكن إلا برمجتها بالأسمبلي مثل الدرايفات (سواقات) الأجهزه ، كذلك فأن الأسمبلي يعطيك برامج سريعة جداً ، وبالطبع فإن بناء برنامج متطور بالأسمبلي أشبه بحفر حفرة بواسطة الملعقه فبالرغم من أنك تحفر، إلا أن إنتاجيتك قليلة ولكن من المحبذ جداً برمجة بعض الدوال و الأجزاء من البرامج بالأسمبلي وبقية البرنامج بواسطة لغة عالية المستوى مثل السي++.

العلاقة بين الأسمبلي واللغات الأخرى :

تعتبر كل من لغة الآلة و الأسمبلي لغتين منخفضتي المستوى Low-Level L anguage اختصاراً( LLL )، لأنها تكتب تعليمة تعليمة ( بعض الناس يعتبر لغة السي لغة منخفضة المستوى ، وهذا الكلام أرجح إلى الخطأ منه إلى الصواب )، بينما تعتبر باقي اللغات High-Level L anguage أختصاراً (HLL)، وفي هذه اللغات تختفي تقنية تخطيط واحد-إلى-واحد وتفسر التعليمة الواحدة إلى عدد كبير من تعيلمات لغة الآلة.

تطبيقات لغة الأسمبلي :

تتطلب كتابة البرامج بلغة الأسمبلي معرفة بالعتاد وعناية خاصة مع الاهتمام بأدق وأقل التفاصيل ، في أيام البرمجة القديمة كان المبرمجون يكتبون برامجهم بلغة الأسمبلي لأن ذاكرة الرام وقتها كانت صغيرة (أقل من 64كيلوبايت)، وهم بحاجة إلى برامج أصغر وأسرع خصوصاً أن معالجتهم أيضاً كانت بطيئة ، مع تطور الحاسوب وتوسع سعة ذاكرة الرام وزيادة سرعته أصبحت البرامج أكثر طولاً وتعقيداً ، هذا التعقيد أدى إلى استخدام اللغات البرمجية عالية المستوى HLL مثل السي والكوبول والبيسك والباسكال والفورترن ، مرة أخرى تطور الحاسوب فأدى إلى أستخدام اللغات العليا الموجهة الهدف OOP مثل السي++ والجافا والتي مكنت من كتابة برامج قوامها آلاف الأسطر والتعليمات المعقده والمتداخله .

من الصعب أن تلاقي برامج كبيرة مكتوبة كاملة بلغة الأسمبلي لأن كتابتها صعبة والأهم من ذلك تطويرها وصيانتها أصعب بكثير ، بدلاً من ذلك يقوم المبرمجون ببرمجة مقاطع مبرمجة برمجة مثلى بلغة الأسمبلي لاستخدمها في تنفيذ أسرع أو الوصول إلى العتاد عن طريقها وباقي البرنامج بواسطة لغة عالية المستوى .

يفضل المبرمجون لغة السي++ كلغة قياسية للبرمجة بلغة عليا لأن لها قدرة عالية وقوية جداً وموجهة الهدف مع القدرة على كتابة مقاطع السي فيها وهي لغة أقل أنخفاضاً وأكثر مرونة مع أستخدام الأسمبلي كعنصر مهم في الوصول إلى العتاد وبرمجة الجزئيات المحتاجة للسرعة .

لا يستخدم المبرمجون شفرة الأسمبلي وسط شفرة لغة عالية المستوى عادة وإنما يستخدمونها عن طريق واجهة على شكل دالة أو كائن وتحتوي هذه الدالة أو هذا الكائن على شفرة الأسمبلي المطلوبة ، وقد تستخدم روتيناً فرعياً أو دالة في لغة عالية المستوى وأنت لاتعلم باستدعاء هذه الدالة أو الروتين الفرعي، وأنك قد أستدعيت شفرة مكتوبة بلغة الأسمبلي .

لغة الآلة :

لغة الآلة كما ذكرنا سابقاً هي اللغة التي تسطيع الآلة أو المعالج التعامل معها مباشرة ، في العائلة X86 كل معالج يحتوي يستطيع تنفيذ تعليمات المعالج الذي قبله ويملك مجموعة تعليمات موسعة و إضافية لا تستطيع المعالجات التي قبله تنفيذها، وأما المعالج الذي يأتي بعد هذا المعالج فأنه يدعم التعليمات الموسعة للمعالج الذي قبله بينما يحتوي هو أيضاً على تعليمات جديدة وموسعة ، باختصار إذا صممت برنامج لمعالح ما فأن المعالجات ماقبل هذا المعالح لن تستطيع تشغيله بينما المعالج نفسة والمعالجات التي بعده (من نفس العائلة) تستطيع تشغيل البرنامج .

لقد حافظت شركة أنتل على التوافقية في العائلة X86 أبتداء من المعالج 8086 وصولاً الى بانتنيوم 4=80886 ولكن الحفاظ على التوافقية يفرض قيود على تصميم المعالج واستخدام تقنيات قديمة ، ومؤخراً قررت شركة أنتل إيقاف عائلة المعالح X86 عند بانتنيوم4 وقامت بأنشاء معالج جديد (غير متوافق مع العائلة X86 ) مبني على تقنية ال64 بت وهو المعالج اتانيوم الجديد .

مثال على لغة الآله :

التعليمية 1011000000000101 هي تعليمة بلغة الآله ومعناها أنقل الرقم 5 الى المسجل ah يقابلها بلغة الأسمبلي mov ah,5 ال 8 بت الأولى من التعليمة تشكل شفرة التعليمة OP-code=operation code وهي تعني نقل قيمة بطول 8 بت الى المسجل AL ، الجزء الثاني من ال16 بت ال8بت الأخرى تشكل الرقم 5 ثنائياً

أرجو أن أكون قد وفقت في الشرح
نلتقي في درس قادم
 

mafia_06

المشرف العام
طاقم الإدارة
إنضم
17 أبريل 2020
المشاركات
359
مستوى التفاعل
335
النقاط
108
الدرس 3 : لغة الأسمبلي
very smart of you my friend
excellent work


good luck

 

mami07

عضو جديد
إنضم
26 يونيو 2020
المشاركات
25
مستوى التفاعل
30
النقاط
3
الإقامة
Algérie
الدرس 3 : لغة الأسمبلي
الف شكرا اخي سمير على ماتقدمه من خدمة مجانية للاعضاء
تقبل تحياتي
 

Ibn Battuta

مشرف على قسم الأجهزه الرقميه
طاقم الإدارة
إنضم
19 يونيو 2020
المشاركات
440
مستوى التفاعل
247
النقاط
78
الإقامة
الجزائر
الدرس 3 : لغة الأسمبلي
شكرا لك اخي الغالي سمير
شرح اراه واضح مع انه تعريف مختصر الا انه الم بكل شيء
تحياتي لك :)
 

mafia_06

المشرف العام
طاقم الإدارة
إنضم
17 أبريل 2020
المشاركات
359
مستوى التفاعل
335
النقاط
108
الدرس 3 : لغة الأسمبلي

samir29

المدير العام
طاقم الإدارة
إنضم
14 أبريل 2020
المشاركات
445
مستوى التفاعل
558
النقاط
188
الإقامة
الجزائر
الدرس 3 : لغة الأسمبلي
شكرا لك اخي الغالي سمير
شرح اراه واضح مع انه تعريف مختصر الا انه الم بكل شيء
تحياتي لك :)
يقال فهم السؤال هو نصف الإجابه بما أننا سنستعمل لغة الأسمبلي في الهندسه العكسيه وجب علينا أن نفهم طريقة التعامل مع هذه اللغه وأنا أحاول أن أبسط الأمور قدر الإمكان لأن هناك من ينشر معلومات مغلوطه وغامضه حتى لا يفكر أي أحد الخوض في هذا المجال .
 

Ibn Battuta

مشرف على قسم الأجهزه الرقميه
طاقم الإدارة
إنضم
19 يونيو 2020
المشاركات
440
مستوى التفاعل
247
النقاط
78
الإقامة
الجزائر
الدرس 3 : لغة الأسمبلي
يقال فهم السؤال هو نصف الإجابه بما أننا سنستعمل لغة الأسمبلي في الهندسه العكسيه وجب علينا أن نفهم طريقة التعامل مع هذه اللغه وأنا أحاول أن أبسط الأمور قدر الإمكان لأن هناك من ينشر معلومات مغلوطه وغامضه حتى لا يفكر أي أحد الخوض في هذا المجال .
في ما يخص الشروحات لاحظت ذلك والتمويه الفاضح
لكي يبتعد الاشخاص الباحثون عن المعلومة الصحيحة
على قولك ان شاء الله نتوصل للفهم الصحيح
تقبل تحياتي :)
 

كلمة المدير

جميع المواضيع والمشاركات المكتوبة تعبّر عن وجهة نظر صاحبها ,, ولا تعبّر بأي شكل من الاشكال عن وجهة نظر إدارة المنتدى .


أعلى