١- المُقدمة

  04 Aug 2015


خلال هذه السلسلة سنتعلم لغة التجميع الخاصة بمعالجات 80x86، هذه السلسة مكملة لسلسة تطوير نظم التشغيل ولا يجب متابعتها بذاتها حيث أن التطبيق العملي لما يتم عرضه هنا سيتم في سلسلة تطوير نظم التشغيل.

المتطلبات القبلية لمتابعة هذه السلسلة:

  • معرفة عامة بالبرمجة.

  • متابعة سلسلة نظم التشغيل.

مقدمة عن لغة التجميع (Assembly Language)

تخيل الأسلوب الآتي في التعبير عن حل المعادلة ( 9x – 3 = 15 )

1- نقوم بجمع (3) على (15) لنحصل على (18) 9x = 15 + 3 = 18

2- نقوم بقسمة (18) على (9) لنحصل على (2) و تكون هي قيمة “x” المطلوبة. x = 18 / 9 = 2

في المثال السابق قمنا بتنفيذ مجموعة من العمليات البدائية (الجمع و القسمة) من أجل الحصول علي قيمة المجهول “x” و كذلك الآلة لديها مجموعة من العمليات البدائيه (primitive operations) و تقوم عن طريق هذه العمليات بحل أي مشكلة بتكوين سلسلة من العمليات المتتالية حتي تصل إلي الحل، و يتم تمثيل هذه العمليات بلغة خاصة تعرف بـ “لغة الآلة ( Machine language )”.

ولكن كيف تبدو لغة الآلة؟ وكيف نقوم بكتابتها؟

  • الكود الآتي هو كود حل المثال السابق بلغة الآلة (الخاصة بمعالجات 80x86)
1011100000001111000000001000001111000000000000111011101000001001000000001111011111110010

لم تفهم شيء؟! لا تقلق سنبسط الأمر قليلاً عن طريق تمثيل الأوامر منفردة:

101110000000111100000000
100000111100000000000011
101110100000100100000000
1111011111110010

ايضاً لم تفهم شيء؟! حسناً هذا هو حال البشر؛ لغة الآلة هي اللغه الوحيدة التي تفهمها الآلة فالآلة هنا رقمية (digital) و بالتالي من الطبيعي بالنسبة لها التعامل مع سلالسل من الأصفار و الآحاد، و لكن هذا يعتبر معقد إلي حد كبير للبشر!

ولكن لأننا سنحتاج هذا لاحقاً سنقوم بتوضيح ماذا يفعل كل أمر:

101110000000111100000000 	يقوم بتخزين الرقم (15) في مسجل داخلي للمعالج

100000111100000000000011	يقوم بجمع (3) على الرقم الموجود في المسجل

101110100000100100000000	يقوم بتخزين الرقم (9) في مسجل آخر في المعالج

1111011111110010			يقوم بقسمة قيمة المسجل الأول على قيمة المسجل الثاني

ولكن اذا كانت “لغة الآلة” هي اللغة الوحيدة التي تفهمها الآله و من الصعب فهمها؛ إذاً كيف سنقوم ببرمجة الآلة؟ إجابة هذا السؤال هي “لغة التجميع”.

###ما هي لغة التجميع (Assembly language)؟

حسب تعريف ويكيبديا (Wikipedia):

“هي الصيغة السهلة القراءة للبشر المقابلة للغة الآلة التي تشكل الأوامر التي ينفذها حاسوب بتصميم ما. فلغة الآلة عبارة عن تتابع من البتات (bits) تمثل عملية حاسوبية أو أمر للحاسوب، تصبح أسهل للقراءة عندما تستبدل برموز تعبر عنها.”

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

فمثلاً؛ كود الأسمبلي الذي يقوم بحل المثال السابق هو:

MOV	AX, 15

ADD	AX, 3

MOV	DX, 9

DIV	DX

هذا أفضل كثيراً من الأصفار والآحاد و يمكن للبشر ان يفهموه بسهولة، و هذا ما سنتعلمه من خلال هذه السلسلة بإذن الله.

محمد أنور محمد أنور

شخص هاوي مهتم بعلوم الحاسب وتطوير البرمجيات الحرة

comments powered by Disqus