مدونة علم البرمجة والحاسوب
من حقك ان تتعلم اكثر

دورة الاسمبلي - ASSEMBLY

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


سنبدأ بإذن الله و سنناقش المواضيع الأتيه :-
---------------------------------------------


- ما هو 0 و 1 (اللغه الثنائيه) ؟
-
ما هى حقيقة وحداتالتخزين داخل الكمبيوتر (المسجلات و الذاكره) ؟
-
كيف يتم تناقل البيانات بينهذه الوحدات و بعضها البعض و بينها و بين المعالج ؟
-
مما يتركب المعالج ؟؟
-
البيانات و أنواعها ،،
-
كيف تتم معالجة البرامج و تعليماتها؟؟
-
كيف يقومالمعالج بتنفيذ تعليمه ما ؟ملاحظه : لأهمية هذه الموضوعاتيرجى الرجوع إلى الدروس السابقه و إلى المصادر المتاحه للأسمبلى و لبنية المعالجاتو تركيبها Computer organization and structure بسم الله،،


----------------------------------------------------------------------------------------------------------------------------------------

ما هى حقيقة ال 0 و 1 (للغه الثنائيه) ؟؟
هذه القيم تعبر عن معنى كلمة يوجد و لا يوجد - صح أم خطأ - أسود أم أبيض - و تعبر عنها فى علوم الإلكترونيات بوجود جهد كهربى علىسلك ما أم لا يوجد ، بمعنى هناك سلك واحد نحاس مثلا و عليه فرق جهد بالنسبه للأرضى، فنقول هنا أن هذا السلك به فولت و يحمل القيمه 1 ، هذا السلك نسميه فىالإلكترونيات (بت) ، 8 اسلاك بجانب بعضهم نطلق عليهم (بايت) .


أما فىحالة عدم وجود به فولت فإنه يمثل القيمه 0بهذه الطريقه يمكن لمجموعهمن الأسلاك متجاوره و منعزله عن بعضها البعض أن تمثل قيمه مثلا 10101 وهذا يعبر عنخمس أسلاك الأول به فولت و الثانى لا يوجد به و الثالث يوجد به و الرابع لا يوجد بهو الخامس يوجد به فولت .


طيب فكر معى أخى ما هى إحتمالات هذه الأسلاك أنتحمل قيم (بمعنى ما هو عدد الإحتمالات الغير متكرره التى يمك أن تمثلها هذه السلاكالخمسه ؟؟)
سنجد أنها 32 إحتمال من 00000 إلى 11111 و هو ما يعبر عن 2 ^ 5

(أى إحتمال قيم السلك الواحد ^ عدد الأسلاك = إحتمال القيم علىكل السلاك)
مثال بسيط ، بالنظام العشرى الطبيعى الذى نعمل بهجميعا (الرقم الواحد إحتماله أن يكون 10 قيم من 0 إلى 9 ) فمثلا لو عندنا رقم مكونمن 5 أماكن فما هى عدد الأرقام التى يمكن أن تمثل بهذه الأماكن الخمسه - على حسبالقانون السابق نجد أنها (10^5 = 100000 إحتمال) (من 00000 إلى 99999) ، فعلاالقانون صحيح ....

من هذا المثال السابق يتبين لنا طريقة حساب عدد القيمالتى يمكن أن يمثلها مجموعه من الأماكن (الأسلاك) فى أى نظام عددى (ونحن نتحدث هناعن النظام الثنائى) .


تدريب : ما هو عدد القيم التى يمكن تمثيلهاب8 أسلاك (بايت) و 16 سلك (2 بايت) و 32 سلك (4 بايت)
الإجابه :

8
بت >>> 2 ^ 8 = 256 إحتمال
16
بت >>> 2 ^ 16 = 65536 إحتمال
32
بت >>> 2 ^ 32 = 4294967296 إحتمال (وهو ما يمثل 4جيجا من وحدات الكمبيوتر)

باقى أن نذكر أن هذا النظام هو المتبع فى جميعالأجهزه الإلكترونيه و الكمبيوتريه و الألات الحاسبه التى يطلق عليها (أجهزه رقميه) Digital Divices



----------------------------------------------------------------------------------------------------------------------------------------

- ما هى حقيقة وحدات التخزين داخل الكمبيوتر (المسجلات و الذاكره) ؟
وحدات التخزين فىالحقيقه تعتبر مجموعه من السلاك المتجاوره مع بعضهم و منعزلين عن بعضهم ، معإمكانية أن كل قيمه على أى سلك يمكن تغييرها من 1 إلى 0أنظر أخىالكريم إلى هذا المثال :-
----------------------------------

أنظرداخل جهازك ، ستجد أن الهارد ديسك Hard Disk موصل بكابل بيانات Data Cable وهو مكونمن 40 سلك 40 Bin فى أغلب الأحيان ، هذه الأسلاك هى المسؤاله عن نقل البيانات التىتجدها أمامك على الشاشه الأن من الهارد ديسك إلى المعالج عبر مسارات اللوحه الأم .


لو تسنى لك النظر إلى اللوحه الأم Mother Board من الخلف ستجد عدةمسارات متوازيه و بجانب بعضها تصل بين الذاكره Ram وبين المعالج Processor
تتفقجميع وحدات التخزين فى قدرتها على تمثيل 0 أو 1 و هذا على حسب حجم الوحدهوتختلف وحدات التخزين فى طبيعة هذه القدرهونناقش هذا سويا هنا،
------------------------

المسجلات Registers :- تتكون من مجموعاتمنطقيه بجانب بعضها يمكن للمجموعه الواحده تمثيل بت ( 0 أو 1) (فولت أو لا فولت) وتطلق على المجموعه Flip Flop وهو مركب من وحدات منطقيه اصغر Logic Gates يستطيعالإحتفاظ بالقيم التى بداخله طوال تغذيته بالفولت ،ماذا تعنى كلمة (طوالتغذيته بالفولت) ؟؟تعنى أن أى مكون كهربى داخل أى جهاز يحتاج لمصدرأساسى للكهرباء وهذا ما يمكنه من التمييز بين 0 أو 1 ، بمعنى أن المسجل يكون موصلبهذا المصدر الأساسى VCC حتى لو ان القيمه التى تحملها أطرافه 0000000 و هذاوحدات الذاكره Ram :-بدون التوغل فى تفاصيل - تتركب من مكوناتشبيهه بالمسجلات أو بمكثفات و لها أنواع عده و لكنها هذه الأنواع التى تحتاج إلىمصدر كهربى اساسى للحفاظ على القيم داخلها كما هو الحال بالمسجلات .

الاقراص الصلبه Hard Disks :- يمكن تمثيل البيانات عليها على هيئةسطوح قابله للمغنطه ، كل سطح مكون من مسارات ، كا مسار مكون من قطع ، كل قطع مكونمن وحدات صغيره فأصغر ، أصغر وحده هى النقطه و هذه النقطه يمكن تغيير خاصيتهاالمغناطيسيه من (توجد مغنطه أم لا يوجد) و هذا ما يهمنا أنه يمكن تمثيل الوحداتالثنائيه بهذه الطريقه ، و الجديدر بالذكر هنا أن وحدات التخزين التى تعتمد على هذهالطريقه لا تحتاج إلى مصدر كهربى للحفاظ على البيانات التى على سطوحهاطيب سؤال :لماذا إذن نوصلها بكابل طاقه Power Source عند تشغيلها ،الإجابه : لا ننسى أخوتى الأعزاء أنه يوجد موتور كهربى بالداخل و أجزاءميكانيكيه أخرى تحتاج بطبيعتها إلى المصدر الكهربى بالإضافه إلى الوحدات المنطقيه والمسجلات التى تنقل البيانات من و إلى كابل البيانات Data Cables .

نعودللمسجلات ثانيا و هى أهم وحده نتعامل معها فى الأسمبلى ،تكون المسجلاتموصله ببعضها و بعض و تصل مباشرا بالمسار الرئيسى للبيانات و المسار الرئيسى للتحكم Data Bus and Control Bus .
تعتبر مسجلات المعالج AX , BX , ....... هى من أهممكونات المعالج ،معظم المسجلات تحتوى - بالإضافه إلى وحدات تخزين البياناتداخلها Flip Flops - على بينات Bins للتحكم بالبيانات من و إليها فمثلا :-

- تحتوى على بن bin للقراءه
-
تحتوى علىبن للكتابه
-
تحتوى على بن تصفيير ( جعل القيمه التى يحملها صفر)
-
تحتوى علىبن ذياده ( ذيادة القيمه الى بداخلها بمقدار 1 )وهكذا ..... و تتيحبنات التحكم هذه للمعالج التحكم بالبيانات الخاصه بكل مسجل على حده ، و سنرى هذهالإمكانيه فى موضوع كيفية نقل البيانات داخل الكمبيوتر .

الجدير بالذكر هناأيضا ، أن أى وحدة تخزين لها بنات تحكم مشابهه Control Bins بما فيهم الذاكره والمسجلات و القرصات الصلبه و المرنه و .....


----------------------------------------------------------------------------------------------------------------------------------------

- كيف يتم تناقل البيانات بين هذه الوحدات و بعضها البعض و بينها و بين المعالج ؟
يوجد على اللوحه الأمثلاث مسارات رئيسيه و لا يخلوا منها جهاز كمبيوتر منذ أخترع الكمبيوتر إلى الأنوهما :-


1 - Data Bus
وهو المسار الذى يتم نقل البياناتعليه و يختلف عرض هذا المسار من معالج إلى الأخر (أو بمعنى أصح وأدق - من جيل إلىآخر) ، الجدير بالذكر هنا هو أن المسار يتكون من عدة أسلاك بجانب بعضها البعض و هناتستخدم لنقل البيانات من و إلى مكونات الكمبيوتر (المعالج - الذاكره - أجهزةالإخراج و الإدخال ) ، يكون كل من هذه المكونات موصل مباشرا بهذا المسار،عرض هذا المسار دائما يتساوى مع عرض مسجلات المعالج و عرض الذاكره(بمعنى أن الأجهزه القديمه 16 بت ، كان عرض كل مسجل 16 بت و عرض الذاكره 16 بت وعرضمسار البيانات Data Bus 16 بت أيضا ، وبنفس الطريقه مع 32 بت و 64 بت الذى ظهرقريبا)


2 - Address Bus

هذا المسار مسؤول على حمل قيمالعناوين و هو يمثل (الورقه التى تكون بيدك عندما تذهب لتبحث عن بيت الرجل الذىيريده والدك و كتب لك العنوان بهذه الورقه)

يتصل بهذا المسار المعالج (الذىيكتب العناوين) ووحدات التخزين القابله للعنونه (الذاكره و المسجلات و أجهزةالإدخال و الإخراج )


الجدير بالذكر هو أن عرض هذا المسار يحدد كميةالذاكره التى يمكن ان يدعمها النظام ، فمثلا فى المعالجات 8086 كان عرض هذا المسار 20 بت ، إذن عدد الإحتمالات التى يمكن أن تمثل على هذا العدد و هو يعبر عن الأماكنالتى يمكن عنونتها بإستخدامه = 2 ^ 20 = 1 ميجا ذاكرهتدريب : ما هواقصى حجم ذاكره يمكن أن يدعمه جهازك الحالى إذا علمت أن عرض هذا المسار 32 بت؟؟؟

3 - Control Bus

وهو المسار التى ترسل عليه إشارات التحكمالتى تكلمنا عليها فى الجزء الثانى من هذا الدرس ،،، ويكون هذا المسار متصل به كلمكونات الكمبيوتر و ذلك ليمكن التحكم بالبيانات من جانب المعالج ،،إذنكيف يمكن نقل البيانات ،،
-------------------------------

لوإفترضنا ان المعالج ينفذ التعليمه MOV AX,[1000] :والتى معناها "إنقل محتوياتالمكان بالذاكره المعنون ب 1000 داخل مقطع البيانات الحالى إلى المسجل AX
يقومالمعالج بحساب العنوان الحقيقى من العنوان 1000 فى التعليمه و عنوان المقطع (راجعجزء العنونه فى دروس الأسمبلى) و يقوم بوضع الناتج فى مسجل العناوين Address Register وهو المسجل المسؤول عن العناوين ، ثم يرسل المعالج إشارة قراءه من الذاكره، ستقوم دوائر البحث فى الذاكره بالبحث عن هذا العنوان المسجل فى مسجل الذاكره AR ومن ثم تحميل ما يحتويه هذا المكان على مسار البيانات Data Bus ، فى نفس الوقت يكونالمعالج قد أرسل رسالة كتابه فى المسجل AX ومن ثم تنتقل البيانات التى على مسارالداتا (والتى خرجت من الاذكره لتوها) إلى المسجل و بهذا تكون التعليمه تم تنفيذهاوبهذه الطريقه يتم نقل البيانات جميعها عبر مكونات الكمبيوتر ، ونلخص هذا فى الخطوات الأتيه :-1 -

تحديد عنوان مكان البيانات المستخدمهفى التعليمه الحاليه .
2 -
تحديد المكان الذى سيتم إرسال البيانات له و من ثمفتح بن الكتابه به .
3 -
تكون البيانات متاحه على مسار البيانات والتى ستنتقلإلى المكون المفتوح لديه بن الكتابه حاليا.
يقوم المعالج بالتحكم فى مسار هذهالإشارات و التحكم بها و موازنة كل خطوه من الخطوات السابقه Syncronization لينتجلك ما تعمل عليه الأن



----------------------------------------------------------------------------------------------------------------------------------------

.

- مما يتركب المعالج ؟؟
يتركبالمعالج من الأتى :-
---------------------------


- المسجلات
-
وحدة الحساب و المنطق
-
المسارات المختلفهبداخله و التى تحدثنا عنها سابقا
-
باقى المكونات الأخرى ....


----------------------------------------------------------------------------------------------------------------------------------------
البيانات و أنواعها ،،،


-
كما لابدأن تعلم أخى/أختى الكريم/الكريمهأن كل ما هو مخزن على وحدات التخزين المختلفه فى الحاسبتكون محزنه على هيئة 0 و 1 و تكون فيما بينها مجموعه من (البيانات والتعليمات)


-
فمثلا ، ملفات ال txt تحتوى على بيانات ، ملفات ال doc تحتوى على بيانات ، ملفات exe تحتوى على تعليمات و بيانات ، ملفات لل dll تحتوى علىتعليمات فقط و هكذا


-
تتواجد التعليمات عادة فى الملفات التنفيذيه ومكتبات التشغيل (exe , dll , ocx , com , bin)


-
يمكن التفريق بينالبيانات و التعليمات بإستخدام الحقائق الأتيه :-+ الملفات التشغيليه تحتوى على أكواد تعليمات معلومه لدىالمعالج و نظام المعالجه ككل .
+
الملفات التشغيليه لها إمتدادات معروفه (ocx , dll , exe , ....) .
+
الملفات التنفيذيه لها تركيب معين ، كل البرامج العاملهأمامك الأن لها نفس التركيب ،ملحوظه :لذيادة المعرفه حول تركيب الملفاتالتنفيذيه من الأنواع (exe , com) ، يرجى قراءة دروس Xacker فى موضوع صناعةاليروسات.
+
فيما عدا ذلك ، يعتبره نظام التشغيل بيانات .مثال : -برنامجبسيط يقوم بطباعة رسالة hello على الشاشه ومن ثم ينتظر لأن يضغط المستخدم على حرفمن لوحة المفاتيح "Press Any Key To Exit" لينتهى البرنامج ،

--------
التحليل ---------
-
هذا البرنامج مكون من التعليمات الأتيه :+ تحضير لبدأ البرنامج و ذلك بتحميل مسجلالمقطع بعنوان مقطع الكود للبرنامج .
+
تعليمات الطباعه على الشاشه .
+
تعليمات إنتظار حرف من وحدة الإدخال (لوحة المفاتيح KeyBoard) .

-
ويحتوى على البيانات الأتيه :

+
النص "Hello" .
+
النص "Press Any Key To Exit"

--------
نهاية التحليل ---------

-
البياناتممكن أن تكون صور ، ألوان ، أصوات ، نصوص ، نصوص مشكله ، بيانات مبهمه ......
-
يمكن التفريق بين أنواع البيانات المختلفه (بالنسبه لنظام التشغيل) :-

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

http://www.onicos.com/staff/iz/formats
http://whatis.techtarget.com/fileFormatA
http://myfileformats.com/


-
لا يمكن للبيانات أنيكون لها أهميه إلا بوجود التعليمات (البرامج المشغله) .
-
لا يمكن للبرامج أنتكون لها فائده إلا بتعاملها و معالجتها للبيانات المختلفه .
-
أى برنامج يتكونمن جزء بيانات Data Segment وجزء تعليمات Code Segment .



CODE

Each program must consist from some code Instructions and some data blocks


-----------------------------------------------------------------------------------------------------------------------

كيف تتم معالجة البرامج و تعليماتها؟؟


-
نظام التشغيل هو المسؤول عن تحضيرالملفات التنفيذيه و إختبار صحة تركيبها و من ثم تكون البرامج جاهزه للتحميل علىالذاكره .

-
لا يتعامل المعالج مع الأقراص الصلبه مباشراً ، فالمعالج لايعرف إلا الذاكره و المسارات و المسجلات وفقط ،

-
نظام التشغيل المسؤول عنتحميل البرامج فى الذاكره و إصدار الأمر للمعالج بأن يبدأ بتنفيذ تعليمات البرنامج .

-
علمتم أخوتى من القسم السابق (البيانات و أنواعها) فإن كل برنامج يتكونمن تعليمات و بيانات ، وكل نوع من الملفات له الصيغه المعروفه من جانب نظام التشغيل، حيث يقوم نظام التشغيل بتحميل هذه التعليمات و البيانات فى الذاكره ومن ثم يسلمالمعالج زمام الأمور لتنفيذ هذه التعليمات .

-
يحتوى المعالج على مسجل مقطع، يكتب به عنوان مقطع الكود الحالى بالذاكره والذى قام نظام التشغيل بتحميلها فيه .

-
يحتوى المعالج على مسجل مقطع يحتوى بداخله على عنوان مقطع البياناتالحلى فى الذاكره و الذى قام نظام التشغيل بتحميله به .

-
يحتوى المعالج علىمسجل يوضع به عنوان التعليمه بالذاكره التى عليها الدور فى التنفيذ .

خطوات تنفيذ أى برنامج :-
-----------------------------


1 -
يتأكد نظام التشغيل منأن تركيبة الملف التنفيذى سليمه و معروفه (ملفات ال exe مثلا تركيبها غير معروف لدىنظام التشغيل لينوكس لذا لا يستطيع التعامل معها ولا تشغيلها إلا بإضافة مفسرات لها )

2 -
يقوم نظام التشغيل بقراءة نوع الملف من ناحيت إحتياجاته للذاكره (توجد عدة أنواع تختلف فى عدد مقاطع الداتا و الكود الذى سيحتاج إليها البرنامج ويكون المبرمج مسؤول أو لغة البرمجه العالية المستوى مسؤوله عن كتابة هذه الأنواع فىأول البرنامج) - إنتظر دروس الأسمبلى القادمه ، سوف اشرح هذا الجزء برمجيا بالتفصيل

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

4 -
يقوم نظام التشغييل بتحميل تعليمات البرنامج و بياناته (لو وجدوا فى ملف واحد - بمعنى أنه يمكن لبرنامج أن يضع بياناته الأساسيه بجانبه فى ملف منفصل و من ثم يقومالبرنامج نفسه بطلب تحميلها بعد ذلك) .

5 -
تحميل كل من مسجلات المقاطع ومسجل التعليمات Instruction Register IR بالقيم المطلوبه ، والجدير بالذكر هنا أنمسجل التعليمات يتم تصفيره فى حالة بدأ تشغيل برنامج جديد وذلك لأن أو تعليمه فىالبرنامج يجب أن توضع فى المكان صفر من مقطع الكود بالذاكره .

6 -
يبدأالمعالج بأخذ أول تعليمه والمقابله للعنوان صفر داخل مقطع الكود و يقوم بتنفيذهاومن ثم يزيد قيمة مسجل التعليمات بواحد (IR = IR +1) وذلك للتعليمه الأتيه وهكذاحتى يصل إلى تعليمة التى تسلم نظام التشغيل التحكم ثانياً .

7 -
الجديربالذكر أن نظم التشغيل الحديثه لا تترك للمعالج (البرنامج) السيطره الكامله علىالجهاز و مكوناته و لكن تختبر حالة البرنامج كل وقت معين و ذلك للتأكد من أنه يعملبحاله جيده و لا يسبب أخطاء أو تلف للعتاد (تتذكر أنه فى الدوس لو قمت بكتابةبرنامج صغير يدخل فى دوره لا نهائيه Infinite Loop و قمت بتشغيله على الدوس ، لنتسطيع أن توقف البرنامج إلا بعمل إعادة تحميل للجهاز كله Restart ) .

8 -
معظم نظم التشغيل الحديثه تقوم بتغيير تعليمات البرنامج و ذلك لجماية مكونات الجهازالحقيقيه من الوصول المباشر لها .


كيف يقوم المعالج بتنفيذ تعليمه ما ؟


-
كل تعليمه لها تركيب ثنائى مختلف عن الباقى ، ومنثم يستطيع المعالج التمييز بين كل تعليمه و أخرى .

-
يدخل التركيب الثنائىعلى المعالج لتفسيرها ومن ثم تنفيذها مباشراً ،

-
مثال :-دعنا نتخيل أن القيمه (01110) هى المقابله للتعليمه ADD AX,BX ،
+
إذن عند وصول القيمه (01110) إلى المعالج للتنفيذ ، فإن مكونات المعالجالمنطقيه تقوم بإدخال محتويات المسجل BX و المسجل AX على وحدة الحساب والمنطق

+
و من ثم تشغيل Activate عملية الجمع داخل وحدة الحساب و المنطق ALU

+
تكون وحدة الحساب و المنطق موصله بمسار البيانات ، فيتم كتابة الناتج علىالمسار ،

+
ومن ثم فتح بن Bin الكتابه على المسجل AX و بهذا يكون تم إنهاءتنفيذ هذه التعليمه .

+
وبنفس الطريقه يتم تنفيذ كل التعليمات و لكن النظرهالسابقه بسيطه جدا عن الواقع

من انا ؟