دورة الأسمبلى - اليوم القبل الأول

هذا الدرس هو أساس لغة الأسمبلى و تعتبر المواضيع التى ستناقش به هى أساس لغة الأسمبلى خاصا و أساس لغات الكمبيوتر عاماً ،،

أعزرونى أنه جاء متأخرا و الشكر الخاص للأستاذ / إبراهيم صالح الذى له الفضل فى تذكيرى بهذه المواضيع المهمه ، شكرا لك يا أخى flower2.gif


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


- ما هو 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 لينتج لك ما تعمل عليه الأن smile.gif

 


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


.

- مما يتركب المعالج ؟؟



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


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

 


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

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



-
كما لابد أن تعلم أخى/أختى الكريم/الكريمه أن كل ما هو مخزن على وحدات التخزين المختلفه فى الحاسب تكون محزنه على هيئة 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 و بهذا يكون تم إنهاء تنفيذ هذه التعليمه .

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

 

 

 


Copyright © www.kettaneh.net