أساسيات البرمجة بلغة الأسمبلى
3- الفكرة الرئيسية لسبب البرمجة بلغة الأسمبلى
ما الذى تقوم بعمله البرامج وكيف نطورها :
الأفكار الرئيسية فى برمجة الميكروكونترولر ( أو أى جهاز يعمل بمبدأ الكومبيوتر) هى :
1- الميكروكونترولر لديه مجموعة تعليمات محددة instruction set يمكنه التعرف على كل تعليمة وتنفيذها
2- البرنامج الذى يقوم الميكروكونترولر بتنفيذه هو قائمة من التعليمات ماخوذة من مجموعة تعليماته يقوم بقراءتها بالنظام الثنائى binary من ذاكرة البرنامج الخاصة به . يسمى البرنامج فى هذا الشكل (الهيئة) بشفرة (كود) الماكينة (الالة) machine code .
3- لتنفيذ ذلك يعمل الميكروكونترولر بلا هوادة من خلال تعليمات البرنامج فيفعل تماما ما تخبره به كل تعليمة , يفعله لا أكثر ولا أقل فيما عدا عند حدوث تحويل مؤقت بالمقاطقة (الاعتراض) .
4- حتى الآن هذا أمر بسيط ولكن الصعوبة فى أنه يجب على المبرمج إيجاد طرق أو وسائل لتجزئة وترجمة أفكاره على شكل خطوات يمكن للميكروكونترولر القيام بها حيث كل خطوة فى جوهرها يجب أن تكون تعليمة من مجموعة تعليماته.
مشكلة البرمجة والتوافق (ايجاد الحل الوسط) مع الأسمبلى :
مشكلة البرمجة ملخصة فى الشكل التالى :
فنحن كبشر نعبر عن أفكارنا بطريقة معقدة وغالبا ما يكون تعريفها بأشكال لغوية غير محددة المعالم .
الميكروكونترولر يقرأ ويفهم النظام الثنائى ويستجيب بشكل دقيق لتعليمات دقيقة . فهو منطقى إلى أقصى الحدود ويفعل تماما ما يؤمر به .
مع هذا الفرق اللغوى كيف يمكن للمبرمج كتابة برامج الميكرومونترولر؟
هناك ثلاثة طرق تفرض نفسها لسد هذه الفجوة وهى :
1- أن يتعلم الانسان لغة الآلة .
وهذا ما كان يستخدمه المبرمجين أحيانا فيما مضى .
بمشقة يكتب كل تعليمة بشفرة الكود الثنائية حتى يستطيع الميكروكونترولر من قراءتها .
وهذا بطىء للغاية وممل وعرضة للأخطاء ولكن على الأقل فان المبرمج يستجيب مباشرة لحاجات وقدرات الميكروكونترولر .
2- استخدام لغات البرمجة ذات المستوى المرتفع .
وهذا كما لو كنا بطريقة ما نطلب من الميكروكونترولر (الكومبيوتر) تعلم لغتنا .
فى لغات البرمجة ذات المستوى المرتفع تكتب التعليمات بشكل يرتبط بإدراكنا للغتنا .
فى هذه الحالة نحتاج إلى برنامج كومبيوتر آخر وهو إما مجمع compiler أو مفسر (مترجم interpreter ( يقوم بتحويل برنامجنا إلى كود لغة الآلة الذى يفهمها الميكروكونترولر.
بهذه الطريقة يستمتع المبرمج بوقته فى البرمجة كما يكتب برامج متطورة .
والنتيجة إن المبرمج ينفصل عن إمكانيات الميكروكونترولر وقد يؤدى إلى برنامج غير فعال نسبيا من حيث استخدام الذاكرة وسرعة التنفيذ .
3- استخدام لغة الأسمبلى .
وهذا هو الوضع الوسط .
كل تعليمة من مجموعة التعليمات تعطى تذكير (تفكير –مفكرة) mnemonic . وهى كلمة مكونة من ثلاثة أو أربعة حروف والتى يمكن استخدامها للتمثيل المباشر لتعليمة واحدة من مجموعة التعليمات .
عندئذ يكتب المبرمج البرنامج مستخدما تعليمات بمفكرات . يجب على المبرمج التفكير بمستوى الميكروكونترولر كما لو كان يعمل مباشرة بتعليماته ولكن على الأقل فإن المبرمج لديه مفكرات mnemonics لأستخدامها أفضل من التعامل بشفرة لغة الالة .
يوجد برنامج كومبيوتر خاص يسمى الأسمبلر المتقاطع ويختصر بالأسمبلر Cross-Assembler يعمل على الكومبيوتر الشخصى ويحول الكود من الأسمبلى إلى كود لغة الآلة التى يفهمها الميكروكونترولر .
ونظرا لأن الكومبيوتر الشخصى هو الذى يقوم بالتحويل من لغة الأسمبلى إلى لغة الالة فيمكن إضافة فوائد أخرى للعملية .
فعلى سبيل المثال يمكن للأسمبلر مراقبة مدى انشغال الحيز المخصص للذاكرة فى ذاكرة البرنامج كما يمكنه قبول علامات labels الأرقام ومواضع الذاكرة مما يؤدى إلى تسهيل مهمة المبرمج إلى حد كبير .