|
عضو جديد
|
رقم العضوية : 12672
|
الإنتساب : Nov 2007
|
المشاركات : 7
|
بمعدل : 0.00 يوميا
|
|
|
|
المنتدى :
المنتدى العلمي والتقني
ماهي لغة الاسمبلي ؟
بتاريخ : 17-08-2009 الساعة : 04:00 PM
بسم الله الرحمن الرحيم
الى طلبة كلية الهندسة (تقنيات الحاسبات) وطلبة كلية (علوم الحاسبات) اقدم لكم اللغة المستخدمه وهي لغة الاسمبلي المعروفة بـ الاسيمبلي لا نكوج
ماهيالأسمبلي :
في قديم الزمان أيام بدايات الكمبيوتر كانت برمجةالكمبيوتر تتم بواسطة لغة الأله 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ثنائياً.
تحياتي لكم مع التقدير;)
|
|
|
|
|