البرمجة بلغة التجميع اسمبلي..
في التدوينات الماضية بعض تاريخ عائلات المعالجات CPU – computer interface ثم تحدثنا عن معالجات 4CISC و معالجات RISC وذكرنا الفرق بين معالجات 4CISC و معالجات RISC ومبدأ المعالجة التواردية
هذا روابط التدوينا السابقة
الدرس الثاني معالجات 4CISC و معالجات RISC - computer interface
الدرس الثالث المعالجات التواردية pipelining
الدرس الخامس المتحكمات الصغرية Microcontroller
الدرس السابع البنية الداخلية للمعالج 8088/ 8086
الدرس الثامن السجلات الداخلية للمعالج 8088/ 8086
الدرس التاسع تنظيم ذاكرة المعالج 8086
الدرس العاشر انماط العنونة addressing modes
بعد ان وصلنا الى درس
انماط العنونة ننتقل البرمجة بلغة التجميع اسمبلي وسنتعلم كيفية كتابة برامج بلغة تجميع المعالج 8088/8086
وتنفيذها على الحاسوب الشخصي. وسنستخدم، من أجل ذلك، برنامج المجمِّع (المجمع هو برنامج مهمته تحويل البرامجِ المكتوبةِ بلغةِ التجميع، التي يفهمها الإنسان، إلى لغةِ آلةٍ قابلةٍ للتنفيذ. ) من شركة مِكروسوفت assembler MASM لترجمة البرامج المكتوبة بلغة التجميع وتحويلها إلى ملفات تنفيذية.
لإنشاء ملف تنفيذي انطلاقًا من برنامج مكتوب بلغة التجميع يجب علينا تنفيذ الخطوات الثلاث
التالية:
1-
كتابة برنامج بلغة التجميع باستخدام محرر نصوص مناسب ومن ثُم تخزينه باللاحقة asm وليكن اسم الملف الناتج هو .Myfile.asm
2-
تحويل )ترجمة)الملف Myfile.asm إلى لغة الآلة باستخدام برنامج المجّمع MASM او برنامج مجمع assembler آخر مناسب . يولد برنامج المجمع الملف Myfile.obj ، ويُجري في هذه المرحلة أيضًا اكتشاف الأخطاء النحوية الموجودة في الملف .Myfile.asm
3-
استخدام برنامج رابط LINKER (وهو برنامجٌ يَربطُ نَسِيقَاتٍ مُصرَّفةً compiled modules وملفاتِ معطياتٍ لإنشاء برنامجٍ تنفيذي. قد يَكون
للرابط وظائفُ أخرى أيضاً آإنشاء المكتبات) .
لتحويل الملف Myfile.obj مع ملفات أخرى (اذا كان
البرنامج مُوزعًا على عدة ملفات) إلى الملف التنفيذي Myfile.exe أو .Myfile.com
كما يمكننا تَفحص عمل البرنامج باستخدام برنامج مُنقِّح debugger (الديبجر هو برنامج مصمم للمساعدة في تنقيح برنامجٍ آخر، بحيث يسمح للمبرمج بتنفيذ برنامجه خطوًة فخطوة، وتفحصِ معطيات البرنامج، ومراقبةِ بعض الشروط كتلك المتعلقة بقيم المتغيرات.) مثل البرنامج CODEVIEW الذي هو جزء من حزمة برمجيات MASM .
تبين الصورة التالية
الخطوات الثلاث السابقة مع اسم البرنامج المستخدم في كل مرحلة وكذلك مُدخل و مُخرج كل مرحلة.
بنية
تعليمات
المعالج 8086 8088/
يتألف برنامج مكتوب بلغة التجميع من مجموعة من العبارات statements يمكن أن تتضمن العبارة إحدى تعليمات المعالج أو مُوجه directive لبرنامج المجمع.
يبين السطر التالي مثا ً لا على عبارة نموذجية يمكن أن نجدها في برنامج بلغة التجميع:
START: MOV AX, BX ; copy BX into AX
يمكن أن تتضمن العبارة بعض أو كل الحقول التالية:
Label ...(لم استطيع وضع مصطلح
عربي مناسب ولكن التعريف قد يساعدك في فهمه )..
عبارة عن مُعرف يوضع قبل التعليمة، يمكن استخدامها مثلا في تعليمات القفز كعنوان رمزي symbolic address للعنوان التي ستقفز إليه التعليمة عوضًا عن العنوان الفيزيائي لها.
يعني تستطيع ان تقول
عنه انه عبارة عن لقب ....
مثال: تقفز التعليمة JMP في البرنامج التالي، إلى الموقع أو العنوان ذي الـ Label START وفية
التعليمة :MOV
AL, 0h
JMP START
….
START: MOV AL, 0h;
تعليمة
بلغة
التجميع: مثل MOV و ADD
معاملات
او متغيرات التعليمة:
يمكن أن تحتاج التعليمة إلى معامل أو اثنين، كما يمكن أن يكون المعامل مُضمنًا في التعليمة نفسها، أو لا تتضمن التعليمة أي معامل. في حال تضمنت التعليمة أكثر من معامل يجري الفصل بينهم بفاصلة (,).
مثال: لا تحتاج التعليمة NOP إلى أي معامل، بينما يكون المعامل في التعليمة CLC مُضمناً في التعليمة نفسها. تحتاج التعليمة INC AL إلى معامل واحد، أما التعليمة MOV CX, AX فتحتاج إلى معاملين.
...ملاحظة (NOP هذه التعليمة لا تؤثر أي عملية ولا تؤثر على حالة الرايات)
تعليق:
كل ما يكتب بعد الفاصلة المنقوطة (;)
هو تعليق comment يهمله المجمع أثناء تحويله برنامج بلغة المجمع إلى لغة الآلة.
بادئة :
يمكن أن تتضمن بعض التعليمات بادئة prefix قبل التعليمة مثل البادئة REP .
نلتقي في الدرس القادم
إرسال تعليق
لا تبخل علينا باقتراحك او قم بمشاركة الموضوع ليستفيد الاخرين ايضاً شكرا لزيارتك عزيزي الزائر