معهد دعم اتش فى اى بى اس لحلول الويب - Powered by vBulletin


 
 
صفحة 1 من 2 12 الأخيرةالأخيرة
النتائج 1 إلى 10 من 14

الموضوع: دورة فى الأسمبلى

  1. #1
    عضو جديد


    تاريخ التسجيل: Jun 2011
    رقم العضوية: 7
    المشاركات: 2,181
    HVIPS5 غير متواجد حالياً

    Post دورة فى الأسمبلى


    دورة الأسمبلى
    دورة الأسمبلى
    دورة الأسمبلى

    بسم الله الرحمن الرحيم

    نبداء اليوم دورة فى لغه الاسمبلى وتلك الدورة مقسمه على عددة دروس

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

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


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


    - ما هو 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 بما فيهم الذاكره والمسجلات و القرصات الصلبه و المرنه و .....


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

    يتبع دورة فى الاسمبلى
    التعديل الأخير تم بواسطة HVIPS5 ; 06-30-2011 الساعة 10:05 AM

  2. #2
    عضو جديد


    تاريخ التسجيل: Jun 2011
    رقم العضوية: 7
    المشاركات: 2,181
    HVIPS5 غير متواجد حالياً

    رد: دورة فى الأسمبلى


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



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


    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 .

    كود:
               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 و بهذا يكون تم إنهاءتنفيذ هذه التعليمه .

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






    دورة الأسمبلى
    دورة الأسمبلى
    دورة الأسمبلى

  3. #3
    عضو جديد


    تاريخ التسجيل: Jun 2011
    رقم العضوية: 7
    المشاركات: 2,181
    HVIPS5 غير متواجد حالياً

    رد: دورة فى الأسمبلى


    الدرس الثانى

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

    ماهي الأسمبلي :-
    -------------------
    في قديم الزمان أيام بدايات الكمبيوتر كانت برمجة الكمبيوتر تتم بواسطة لغة الأله Machine Language أختصاراً ML ( لغة الآله هي اللغه التي تفهمها الآله مباشرة دون الحاجة الى تفسيروهي تخزن بصورة ثنائبة [ تركيبة من الأصفار والوحايد] في الذاكرة على شكل تعليماتووسائط تأخذ كل واحد منها عادة مقدار 8بت=ا بايت ) وكان هذا النوع من البرمجة صعبجداً عندها طور المبرمجون أول لغة برمجة وهذه اللغه فكرتها بسيطة جداً حيث أنه بدلأن تكتب رموز الآله يتم كتابة كلمات مختصره تدل على نوع العمليه مثال ( MOV,ADD,CMP ) ثم ببرنامج بسيط يتم تحويل هذه الشفرة الى لغة الآله بأستخدام تخطيطواحد-الى-واحد أي أن كل سطر أو عبارة في الأسمبلي تحول الى تعليمة واحدة مقابله فيلغة الآله (مثال بدل كتابة 011000000000101 يتم كتابة mov al,5 ) يعرف البرنامجالذي يقوم بعملية التحويل بالأسمبلر Assembler ، علماً بأن هناك عدة أنواع منالأسمبلر كل نوع يختص بتقنية معينة وبعائلة معينه من المعالجات
    ونحن هنا بصدد تعلم البرمجة بالأسمبلي للمعالجات المبنية على تقنية IBM-PC والمنتجة من شركة أنتلوهي العائلة 86×80 ويرمز لها أختصاراً X86 وهي تضم :
    ( 8086 / 8088 / 80186 / 80286 )
    لمعالجات ال 16 بت و ( 80386 / 80486 / 80586=بنتنيوم1 / 80686=بنتنيوم2 / 80786=بنتنيوم3 / 80886=بنتنيوم4 ) لمعالجات ال 32 بت وسوف أتطرق في دروس متقدمةالى المعالج أتنيوم 64 بت المبني بتقنية جديده كلياً لمن يرغب بمعرفة مسبقة لهذاالمعالج الجديد كذلك سوف أتطرق بأذن الله الى الكروس أسمبلر وهي مجموعة برامج خاصةمصممه للتحويل من لغة أسمبلي لعائلة معالجات معينة الى عائله أخرى .

    تعريف لغة الأسمبلي

    الأسمبلي هي لغة برمجة تتكون من سلسلة من التعليمات المتتابعةكل تعليمة فيها تحول الى تعليمة مقابلة بلغة الآله .



    تعريف الأسمبلر :-
    -----------------
    الأسمبلر هو برنامج يقوم بتحويل التعليمات المكتوبةبلأسمبلي الى لغة الآله .


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



  4. #4
    عضو جديد


    تاريخ التسجيل: Jun 2011
    رقم العضوية: 7
    المشاركات: 2,181
    HVIPS5 غير متواجد حالياً

    رد: دورة فى الأسمبلى



  5. #5
    عضو جديد


    تاريخ التسجيل: Jun 2011
    رقم العضوية: 7
    المشاركات: 2,181
    HVIPS5 غير متواجد حالياً

    رد: دورة فى الأسمبلى


    الدرس الثالث


    كيان الحاسوب الصلب :-
    ---------------------------


    يتألف الحاسوب بشكل أساسي مناللوحة الأم Mother Board والمعالج Microprocessor وذاكرة القرأة-فقط ROM=Read-Only Memory وذاكرة الوصل العشوائي=الرام RAM=Random-Access Memory ووحدة التغذية Power Supply والمنافذ التوسعية Expansion Slots مثل فتحات توصيل الكروت ( كروت الشاشه والصوت و ما إلى ذلك ) .

    المعالج : -
    --------------
    يمثل المعالج عقلالحاسوب وهي الوحدة المسؤله عن القيام بأدارة الحاسوب والقيام بالعمليات الرياضيةوالمنطقية ونحن هنا كما أوضحت ندرس معالجات أنتل من العائلة X86 لأنها العائلةالأشهر والأكثر أستخداماً بين الناس .

    وحدة التنفيذ ووحدة ملاءمة الممر Execution Unit And Bus Interface Unit :-
    -------------------------------------------------------------------------------------------------
    يتألفالمعالج من وحدتين هما وحدة التنفيذ Execution Unit أختصاراً EU ومهمتها تنفيذالتعليمات ،
    ووحدة ملاءمة الممر Bus Interface Unit أختصاراً BIU ومهمتها نقلالبيانات والمعطيات الى وحدة التنفيذ . تحتوي وحدة التنفيذ على وحدة الحساب والمنطق Arithmetic And Logic Unit أختصاراً ALU ووحدة التحكم Control Unit أختصاراً CU ومجموعة من المسجلات.

    تتألف وحدة ملائمة الممر من وحدة التحكم بالممر Bus Control Unit ومسجلات المقاطع Segment Registers ورتل=كيو التعليمات Instruction Queue (الرتل أو الكيو هو نوع من أدارة الذاكرة تكون فيه المعلومة الداخلة أولاخارجة أولاًً FIFO=First In First Out ).

    وتقوم وحدة ملاءمة الممر بعملياتالتحكم بالممر ونقل المعطيات بين كل من وحدة التنفيذ والذاكرة وأجهزة الأدخالوالأخراج الخارجية، كما تقوم مسجلات المقاطع بعملية التحكم في عنونة الذاكرة .

    تضع وحدة ملاءمة الممر تضع التعليمات في رتلها المخصص لها في وحدة التنفيذبعد أن تقوم بجلبها من الذاكرة . يخصص رتل التعليمات لوضع التعليمات فيه بعد جلبهامن الذاكرة بواسطة وحدة ملاءمة الممر ، ولذلك يوجد دائماً رتل من التعليمات جاهزهلتنفيذها من قبل وحدة التنفيذ . تعمل وحدة التنفيذ ووحدة ملاءمة الممر على التوازي (في نفس الوقت) ، بينما تحتقظ وحدة ملاءمة الممر بخطوة نحو الأمام، فعندما تقوموحدة التنفيذ بتنفيذ تعليمة ما ، تعمل وحدة ملاءمة الممر أما على جلب تعليمة منالذاكرة ووضعها في رتل التعليمات لكي تنتظر دورها في التنفيذ ، أو على جلب معطياتمن الذاكرة أو أحد أجهزة الأدخال أو الأخراج . وخلافاً للطريقة التسلسلية فيالمعالجة فأن هذه العملية تحقق حدوث عمليتي الجلب fetching التنفيذ execution فيوقت واحد الأمر الذي يزيد بدورة من سرعة المعالج .

    ذاكرة القرأة-فقط ROM = Read-Only Memory :-
    ---------------------------------------------------------------
    وهيعبارة عن شريحة دائرة متكاملة IC تحوي على ذاكرة فيها بيانات غير قابلة لأعادةالكتابة عليها (أفتراضياً - شرائح ال ROM الحديثة يمكن إعادة الكتابة عليها بطرقمختلفة ) ، تحتوي هذه الذاكرة على برنامج ال BIOS=Basic Input Output System أونظام الأدخال والأخراج الأساسي، ولايمكن للمعالج القرأة من هذه الذاكرة مباشرة ولكنأول شئ يفعل المعالج عند تشغيله في عملية الأستنهاض هي تحميل البيانات الموجودة فيالروم ونقلها في الرام أو بالأحرى الى القسم الأخير من الرام ذا العنوان الأكبر . تتجلى فائدة ال BIOS في القيام بعملية الفحص الذاتي عند الأستنهاض POST=Power On Self Test بالأضافة الى تحميل برنامج محمل نظام التشغيل بالأضافة الى توفير دوالومقاطعات قياسية في ذاكرة الرام تستطيع أن تستخدمها البرامج للرسم على الشاشة مثلاًأو التعامل مع لوحة المفاتيح أو القرأة والكتابة من والى القرص الصلب .

    ذاكرة الوصول العشوائي RAM = Random Access Memory :-
    -------------------------------------------------------------------------------
    هذهالذاكرة مهمة جداً حيث أن أي برنامج لايمكن أن يعمل الا اذا حمل الى هذه الذاكرةكذلك فهي تستخدم لحفظ المتغيرات وحفظ برامج النظام الأساسية ومنها جدوال المقاطعاتوالمقاطعات أنفسها والرويتنات الفرعية ...... الخ ولايتم أستخدام القرص الصلب لحفظمثل هذه المعلومات لأن وقت الوصول فيه أبطأ بكثير من ذاكرة الرام (ولو أن القرصالصلب يستخدم في توفير ذاكرة أفتراضية عن طريق القيام بعمليات مبادلة للصفحات معذاكرة الرام) ، وبالطبع فأن هذه الذاكرة يمكن الكتابة اليها أو القرأة منها عن طريقعنونتها .
    فبأستخدام العنوان يمكننا أن نصل الى مكان محدد في الذاكرة لنعمل عليهكل عمليات التحرير المطلوبة .


    المقدمه السابقه ستعتقد أنها كلام نظرىوغير مفيد و لكن لتعلم أخى أنه هو أساس لغة الأسمبلى بل أساس الحاسب ككل ولو أنكأردت أن تفهم حقيقة التعامل داخل الكمبيوتر وحلقة الوصل بين البرامج والأنظمه التىنعمل عليها من جهه و العتاد من جهه أخرى فعليك الإنتباه له و التأكد التام من أنكإستوعبته جيدا وفهمت كل حرف به ،


    --------------------------------------------------------------------------------------------------------------------------
    يتبع


  6. #6
    عضو جديد


    تاريخ التسجيل: Jun 2011
    رقم العضوية: 7
    المشاركات: 2,181
    HVIPS5 غير متواجد حالياً

    رد: دورة فى الأسمبلى


    تمثيل الأعداد والحروف
    -------------------------


    قد تتسائل ما علاقة تمثيلالبيانات والعد الثنائي بالأسمبلي ؟ حسناً كما وضحت من قبل فأن الأسمبلي هي لغةقريبة جداً من لغة الآله وهي لغه منخفضة المستوى تتعامل مع العتاد والمعالح بصورةمباشرة ولكي نحقق فهماً أوسع لهذه اللغه يجب أن نفهم بعض الأشياء المهمة جداً فيبنية المعالج .


    العد الثنائي :-
    ----------------
    يتم تمثيلالشفرات والبيانات في ذاكرة الكمبيوتر كتواليف من الشحنات الكهربائية تأخذ قيمتينالأولى وهي وجود الشحنة ويرمز لها ب ON أو صحيح TRUE أو ‘1’ والأخرى وهي غيابالشحنه ويركز لها ب OFF أو خطأ FALSE أو ‘0’ ، ووجود الشحنة يكون عادة بين 4.5 الى 5.5 فولت ( المعالجات الحديثه بين 2.5 الى 3.5 فولت ) وغياب الشحنة يكون بين +0.5فولت و -0.5فولت .

    وحدات الذاكره الأساسيه في الذاكره والوحدات التي سنتعاملمعها كثيراً هي :-
    ---------------------------------------------------------------------------------
    1
    بت = بت و هو إما يساوى 0 أو 1 (وجود شحنه أو عدم وجود شحنه ) ( عدد 2 إحتمال ) Bit
    8
    بت = 1 بايت (عدد 256 إحتمال أى ما يعادل 2 أس 8 ) Byte
    16
    بت = 2بايت(عدد 65536 إحتمال أى ما يعادل 2 أس 16 ) Word
    32
    بت = 4 بايت(عدد 4294967296 إحتمال أى ما يعادل 2 أس 32 = 4 جيجا إحتمال ) DWord=DoubleWord
    64
    بت = 8 بايت ( عدد 2 أس 64 إحتمال = 16 جيجاجيجا إحتمال )

    وحدات أكبر و تختصبقياس البيانات فى مختلف أجزاء الكمبيوتر :-
    -----------------------------------------------------------------------
    1024
    بايت = KB الكيلوبايت
    1024
    كيلوبايت = MB الميجابايت
    1024
    ميجابايت = GB الجيجابايت
    1024
    جيجابايت = TB التيرابايت
    1024
    تيرابايت = PB البيتابايت
    1024
    بيتابايت = EB الأكسابايت
    1024
    أكسابايت = ZB الزيتابايت
    1024
    يوتابايت = YB اليوتابايت

    الأسكي كود ASCII:-
    -------------------------
    يتم في الحاسوب وبقية توحيد أستخدامالرموز أستخدام شفرة الآسكي كود (حالياً يعمل على تبني شفرة ال unicode وهي تسمحبتعدد اللغات في مستند واحد حيث يتم تمثيل كل حرف بأستخدام كلمة واحده=2بايت) كلمة ASCII هي أختصار ل :
    American National Standard Code For Information Interchange
    ويتم أستخدام هذا الكود الموحد لتسهيل تناقل البيانات ويمثل كل رمزفيه بعدد ثنائي بطول 1بايت=8بت=256أحتمال .
    مما يعنى أن أى حرف نكتبه أو نراهعلى الشاشه يكون له مقابل رقمى يسمى الأسكر كود الخاص به و سنستخدم هذا الموضوعكثيرا كثيرا جدا ، لذلك يجب عليك أخذ نظره على جدول الأسكى التالى :-

    الجدول الكامل للأسكى كود من الرقم 0 إلى 127


    جدول الأسكى الموسع من رقم 128 إلى 255


    طريقة كتابةالأرقام في الأسمبلر :-
    -------------------------------------
    لكتابة عددثنائي يوضع في آخر الرمز ( b ) لدلالة على أنه باينري مثال : Binary=11010010B أماالعدد العشري فلايحتاج الى أضافة وأما العدد لأساس 8 فيكتب مع المرمز (Q) في نهايته Octal=1276Q أو الرمز (O) في نهايته Octal=1276O أما العدد السداسي عشر فيكتب بوضع H في نهايته hexadecimal=0AB9CDH مع مراعاة وضع 0 اذا كان العدد يبدأ بحرف كماالمثال.

    يجب أن تعرف الفرق بين تخزين الرقم كرقم أو تخزينه كنص فتخزينالرقم 201 مثلاً كرقم سسيأخذ بايت واحد وهو جاهز للقيام بعمليات رياضية ومنطقيهعليه أما تخزينه كنص فسيأخذ ثلاثة بايت في البايت الأول سيخزن الرقم الخاص بالأسكيكود للرمز '2' وكما قلت يخزن كرقم يدل على الرمز أما البايت الثاني فسيخزن رقمالآسكي كود للرمز '0' أما البايت الثالث فيأخذ القيمه الخاصة بالرمز '1' في الآسكيكود أي أن الرقم خزن بطريقة "102" وليس 102 وهذه الطريقة ليست جاهز للجمع أو الطرحولكنها ممتاز للطباعه على الشاشه ويمكن تحويل النص الى رقم والعكس .

    الأعدادذي الأشاره :-
    -----------------------
    يتم تخزين الأعداد ذي الأشاره كالتالي :-
    ------------------------------------------
    العدد موجب أذا كانت البتالأخيره صفر وقيمة الرقم هي باقي البتات أي لو أخذنا رقماً من بايت واحد فأن البترقم 7 (الثامنه - الترقيم يبدأ من الصفر ) يجب أن تكون صفراً ليكون العدد موجب أماالبتات من 0 الى 6 ( السبعه الأولى ) فتشكل قيمة الرقم
    أما أذا كان العدد سالبفأن البت الأخيرة تساوي واحد أما قيمة الرقم فتساوي سالب المكمل الثنائي للعدد أيلو أخذنا رقم مخزن في واحد بايت مثال = 11110110 بما أن البت السابعه=1 فأن الرقمسالب / نأخذ الآن المكمل الثنائي للعدد وهو 00001010 / القيمة تساوي -00001010 أيسالب عشرة .


    ملاحظات مهمه :-
    ---------------------
    1 -
    البايت فىنظام التمثيل العددى بدون إشاره ( على إعتبار أن العدد موجب ) نطاقه من 0 إلى 255 .
    2 -
    البايت فى نظام التمثيل العددى بالإشاره ( البت الأخير للإشاره) نطاقه من -128 إلى +127 .
    3 -
    عند تعريف متغير من النوع Integer فى السى أو البيسيك فإنهيحجز للرقم 2 بايت .


    إلى هنا ينتهى الدرس الثانى ،


  7. #7
    عضو جديد


    تاريخ التسجيل: Jun 2011
    رقم العضوية: 7
    المشاركات: 2,181
    HVIPS5 غير متواجد حالياً

    رد: دورة فى الأسمبلى



  8. #8
    عضو جديد


    تاريخ التسجيل: Jun 2011
    رقم العضوية: 7
    المشاركات: 2,181
    HVIPS5 غير متواجد حالياً

    رد: دورة فى الأسمبلى


    تابع الدرس الرابع

    مسجل الأعلام
    Flags Register :-
    ------------------------------------------
    وهو مسجل بطول 16بت يحتوي علىأعلام طول كل منها 1بت فقط وتستخدم لتعكس حالة آخر عملية أو للتحكم بعمليات معينهوكل علم له موقع معين في ال 16 بت علماً بأن 9 فقط منها محجوزة والباقي غير معرفةوليس عليك حفظ مواقع هذه الأعلام لأنك سستعامل معها بالرمز الذي يرمز لها وكل علمله رمز مكون من حرف واحد فقط يدل عليه ويتبعه أحياناً الحرف F أختصار FLAG للتوضيحأنه علم ، كل علم أما يكون واحد أي SET أو صفر أي CLEAR .



    مخطط 4_3 : هذا المخطط يوضح مسجل الأعلام الذي طولة ال 16بت




    وهناك نوعين من الأعلام هي أعلام الحالة Status Flags وأعلام التحكم Control Flags .

    #
    أعلام التحكم Control Flags :-
    -----------------------------------------
    وهي أعلام مخصصة لضبط قيمتهامن قبل المبرمج أو العتاد ويتم ضبطها عند القيام بالمقاطعات أو أستدعاء البرامجالفرعية أو بعض الأوامر بهدف التحكم بشئ ما وهذه الأعلام هي :

    1.
    علمالأتجاه (DF=direction flag) : -
    -----------------------------------------------
    يؤثر في التعليمات التيتقوم بنقل البيانات مثل MOVS,CMPS,SCAS. عندما يكون العلم 1=UP يأخذ الأنتقال أتجاهالطبيعي أما عندما يكون 0=DOWN يأخذ أنتقال البيانات أتجاه معاكساً ( قيمة العلم DF عند بداية البرنامج =1). لضبط العلم بواحد نستخدم التعليمة std ولضبطه بصفر cld .


    2.
    علم المقاطعه (if=intrreupt flag) : -
    -------------------------------------------------
    يحدد هذا العلم اذاماكان بمقدور النظام أجراء مقاطعات أو لا ، ويضبط هذا العلم بواسطة أجهزة الهاردويروكذلك وقت النظام ، تستطيع أنت ضبطه أو تصفيره اذا كنت تريد حدوث مقاطعات خارجية أولا ، اذا كانت قيمة العلم=1 فهذا يعني مفعل enable ويمكن أجراء المقاطعات أما اذاكان صفر فأنه غير-مفعل disabled ولايمكن أجراء المقاطعات ( قيمة العلم IF عند بدايةالبرنامج =1). لضبط العلم بواحد نستخدم sti ضبطه بصفر CLI .


    3.
    علمالمصيدة (tf=trap flag) : -
    ------------------------------------------
    يتيحهذا العلم وضع المعالج في نمط الخطوة الواحدة في الوقت الوحد (single step mode) مما يسمح لبرامج فحص الأخطاء كالديبغر بتتبع البرنامج ، اذا كانت قيمة العلمواحد=ON فأن النمط يعمل أما اذا كان صفر=off فأن النمط لايعمل ( قيمة العلم TF عندبداية البرنامج =0) .

    #
    أعلام الحالة Status Flags :-
    ---------------------------------------
    هذه الأعلام تضبط آلياً بعد كلعملية رياضية أو منطقية وهي تعكس هذه العملية ، ويمكن بعد العملية التحقق من قيمهذه الأعلام لتنفيذ عمليات مثل الشروط والحلقات وهذه الأعلام هي :

    1.
    علمالحمل (cf=carry flag) : -
    ----------------------------------------
    يضبطهذا العلم=1 اذا كان نتيجة آخر عملية كبيرة جداً على الهدف أو المقصد (في الأعدادالتي بدون أشارة فقط ) ، مثال هذا البرنامج :

    mov ah,200
    add ah,100

    بما أن المسجل AH هو 8بت فأن أقصى قيمة يتحملها هي 256 وبما أن القيمة فيالمسجل هي 200 ثم أضفنا لها 100 فأن الجواب أكبر من الهدف (aH هنا) لذلك العلم CF سوف يضبط=1 بعد عملية الجمع
    لضبط لعلم برمجياً stc ولتصفيره clc

    2.
    علمالفيض (OF=overflow flag) : -
    ----------------------------------------------
    هو نفس علم الحمل لكن معالعمليات ذي الأشارة أي أنه يضبط اذا كان ناتج آخر عملية أكبر أو أصغر من حدودالهدف ، مثال :

    mov ah,-100
    add ah,-50

    بما أن أصغر قيمةيتحملها المسجل AH هي -128 لكن ناتج العملية -150 فأن علم الفيض يضبط=1

    3.
    علم الأشارة (sf=sign flag) : -
    -------------------------------------------
    يضبط هذا العلم اذا كان ناتجآخر عملية رياضية أو منطقية سالب ويصفر اذا موجب (في الواقع أن العلم نسخة من البتالأخيرة للجواب( بت الأشارة) - كما ذكرنا سابقاً فأن العدد سالب اذا البت الأخيرة 1وموجب اذا صفر ) .

    4.
    علم الصفر(zf=zero flag) : -
    -------------------------------------
    يضبط هذا العلم=1 اذا كانت نتيجةآخر عملية رياضية أو منطقية تساوي صفر .

    5.
    علم الحمل المساعد(af=auxiliary carry flag) : -
    ---------------------------------------------------------------
    يضبطالعلم=1 اذا تسببت آخر عملية رياضية أو منطقية حمل من البت الثالثة الى البتالرابعة أو أستلاف من البت الرابعه الى البت الثالثه . هذا العلم لاتوجد له فائدةواضحةوهو قليل الأستخدام برمجياً .

    6.
    علم الأزدواجية - التحقق (pf=parity flag) : -
    -----------------------------------------------------------
    ببساطةيضبط=1 هذا العلم اذا كان عدد الوحايد في ناتج آخر عملية رياضية أو منطقية زوجياًوبصفر اذا كان فردياً ، مثال لو كان جواب آخر عملية = 00100010 فأن العلم سوفيضبط=1 لأن عدد البتات التي تحتوي وحايد =2 وهو عدد زوجي أما اذا كان الجواب مثلاً = 11100000 فأن العلم يصفر لأن عدد البتات التي تحوي وحايد=3 وهو عدد فردي . وكماعلم الحمل المساعد AF فأن أستعمالة قليل برمجياً ويستخدم عادة من قبل نظام التشغيللأدارة الذاكرة وكذلك برامج الأتصال لتحقق من سلامة البيانات المرسلة .

    لاحط أن كل من الأعلام [علم المصيدة (tf=trap flag)/علم الفيض (OF=overflow flag)/علم الأشارة (sf=sign flag)/علم الصفر(zf=zero flag)/علم الحملالمساعد(af=auxiliary carry flag)/علم الأزدواجية - التحقق (pf=parity flag)] لايوجد لهم تعليمات مباشرة لضبطهم أو تصفيرهم وتحتاج أن تستخدم طريق فيها أنحناءةبسيطة لتعديل قيم هذه الأعلام سوف يتم شرحها في دروس قادمة علماً بأن البرامجالعادية لن تحتاج لتعديل قيم هذه الأعلام وكل ماستحتاجه هو قرآة القيم التي بها .

    إلى هنا ينتهى الدرس الثالث ، ونبدأ من الدرس الرابع إن شاء الله تعليماتلغة الأسمبلى ( البدايه الفعليه ) ، نشكركم لحسن إستماعكم معنا ، رجاء الإهتمامالتام بهذه الدروس الثلاثه السابقه لأهميتها الشديده
    .

  9. #9
    عضو جديد


    تاريخ التسجيل: Jun 2011
    رقم العضوية: 7
    المشاركات: 2,181
    HVIPS5 غير متواجد حالياً

    رد: دورة فى الأسمبلى


    الدرس الخامس

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


    أصبحنا فى اليوم الرابع و لم ندخل بعد فى اللغه نفسها ، يبدو أن الموضوع ليس كمانتصور .... ،،،

    اليوم سنفتح باب اللغه إن شاء الله و ندخلها ولكن بخطوات قليله جدا، هيا جهزوا أنفسكم و الباب يحتاج مفتاح .!!

    سنتناولالأتى فى هذا الدرس :-
    ---------------------------------
    1 -
    نظم العنونه Addressing Modes
    2 -
    تعليمات الأسمبلى Assemply Instructions

    ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ــ

    1 - نظم العنونه Addressing Modes :-
    -------------------------------------------------


    قلناأننا نتعامل مباشرا مع الذاكره و أماكنها المختلفه فيجب أن نتعرف على ما هى نظمعنونة الذاكره و التى تمكن لنا وصولا مضمونا إلى القيم الأخيره (المستهدفه) Operands ،

    معلومات عامه :-
    -------------------
    1 -
    الذاكره تكونمقسمه تخيليا (عن طريق نظام التشغيل و البروسسور) إلى أجزاء تسمى مقاطع (Segments) . هذه المقاطع تعمل كأقسام بيانات وهى أجزاء محددة الطول ب 64 كيلو بايت ، كل مقطعله رقمه ( عنوانه ) و يمكن الوصول إلى مقطع محدد عن طريق مسجلات المقاطع التى تمذكرها فى الدرس السابق ، عند أى إستخدام للذاكره ، يجب تحديد المقطع أولا عن طريق Data Segment أو أى مسجل مقاطع آخر ومن ثم تحديد أى مكان داخل هذا المقطع عن طريقمسجل يحمل العنوان المراد وهو بالطبع من 0 إلى 65535 ومن هنا يتم تحديد مكانالبيانات بالظبط ،
    ممكن أن تتخيلها بطريقه أخر : تخيل أن مدينه معينه وأريدالوصول إلى شخص ما فيها أو منزل بها ، المدينه مقسمه إلى شوارع ، كل شارع برقم معينبالترتيب و داخل كل شارع توجد منازل بأرقام مرتبه أيضا من 1 إلى 100 منزل ، كنتأريد الوصول إلى المنزل 45 فى الشارع ال 20 . عندها سأحاول البحث عن الشارع أولاومن ثم البحث داخله عن المنزل ، نفس طريقة العمل بالظبط يتم التعامل بها فى إستخدامالذاكره و تخزين و إخراج البيانات منها .

    2 -
    عند تشغيل أى برنامج ، فإننظام التشغيل يقوم بتحميل البرنامج فى الذاكره ..أين و كم مقطع سيترك للبرنامج؟؟
    فى الحقيقه ، كل برنامج يتم تشغيله على الأقل يأخذ 2 مقطع ، مقطع للشفره Code Segment يتم وضع عنوان هذا المقطع داخل CS مادام البرنامج يتم العمل داخله ،والمقطع الآخر يوضع به البيانات لذلك سمى ب Data Segment ويوضع عنوان هذا المقطع فى DS ،
    كل برنامج يكون مكتوب به عدد المقاطع التى يحتاجها أولا ، هذا لخدمةالبرامج الكبيرة و التى تكون حجمها أكبر من وضعها فى مقطع واحد ، يتم فعليا تحديدحجم البرنامج فى أوله عن طريق تحديد نوعه ما بين صغير ، كبير ، متوسط ، كبير جدا .

    أنواع العنونه :-
    -----------------
    1 -
    عنونه فعليه (حقيقيه) Phsical Addressing :-
    -------------------------------------------------------------
    وهىالعنونه الحقيقيه التى يتم التعامل بها بين داخل الذاكره ، بمعنى لو أن الذاكره 128ميجا ، فإنها ستكون مرتبه ترتيبا تصاعديا من المكان صفر إلى المكان 128 ميجا ،
    نظام الهارد وير الفعلى على شريحة الذاكره يعمل بهذا النوع ( طبيعياً) .
    مثال بالنظام السادس عشر ، على أساس الذاكره مثلا 1 ميجا ، فإنها بها مليونمكان يتم تحديدهم Decoding ب عشرين مكان ثنائى AF67B .

    2 -
    عنونه تخيليه Logical Addressing :-
    ----------------------------------------------------
    وهو النوع الذىتكلمت عنه بأعلى ، الذاكره مقسمه إلى أقسام Segments و كل قسم به محتوياته منالمكان Offset صفر إلى المكان 64 كيلو ، وهذا النظام يتم التعامل به من جانبالبروسسور مع نظام التشغيل و البرامج الأخرى و من ثم يكون المعالج مسؤلأ على تحويلهذا العنوان إلى العنوان الفعلى عن طريق عمليه حسابيه بسيطه وهى عن طريق
    [
    أضربعنوان المقطع فى 10 و من ثم أضيف عليه ال Offset = العنوان الفعلى ]
    مثال : [A100 : 9C00] المكان الأول هو عنوان المقطع و الثانى هو ال Offset داخل هذا المقطع، يتم التعامل بهذا النظام فعليا فى الأسمبلى و بهذه الطريقه بالظبط .

    أنظمةعنونة وسائط التخزين المختلفه والوصول إلى القيم المستهدفه Operand (مسجلات و ذاكرهو ... ) :-
    -------------------------------------------------------------------------------------------------------------------
    1 - Impiled Mode :- (
    الصراحه الترجمه العربيه مخرفه معايا شويا ، نأسف لهذا العطل .. )
    ----------------------------
    وهو لا يتم ذكر بهالعنوان و تكون التعليمه مفهومه للبروسسور بدون أى براميتارات إضافيه ،
    مثال : HLT هذه التعليمه سنتعرض لها فى جزء التعليمات .

    2 - Immediate Mode :-
    --------------------------------
    ويتم ذكر العنوان صراحاً به ،
    مثال: ADD AX,1000B وهذه التعليمه ذكر بها القيمه صراحاً التى سيتم التعامل بها .

    3 - Register mode :-
    ------------------------------
    فى هذا النظامتكون القيمه المرادالتعامل معها فى مسجل Register ما ، لذلك يتم ذكر إسم المسجلبجانب التعليمه .
    مثال : MOV AX,BX وهنا سيتم التعامل مع المسجلان المذكوران .

    4 - Direct memory mode :-
    -----------------------------------------
    وهنا يتم ذكر العنوان فىالذاكره الذى يحتوى القيمه المستهدفه .
    مثال : ADD AX,[1000:200A] حيث أننا نكتبالعنوان الذى يوجد به القيمه المستهدفه داخل التعليمه كما هو موضح .

    5 - Indirect memory mode :-
    -------------------------------------------
    وهنايكون عنوان القيمه فى الذاكره موجود بداخل مسجل و فيها يأخذ المعالج القيمه التى فىالمسجل و تكون هى عنوان الذاكره الذى يحتوى على القيمه .
    مثال : add BX,[SI] .

    ملاحظه : المسجلات التى من الممكن إستخدامها فى هذا النظام 4 وهما BX , SI , BP , DI

    ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ــ

    يتبع



  10. #10
    عضو جديد


    تاريخ التسجيل: Jun 2011
    رقم العضوية: 7
    المشاركات: 2,181
    HVIPS5 غير متواجد حالياً

    رد: دورة فى الأسمبلى


    تابع الدرس الخامس



    1-تعليمات الأسمبلى Assemply Instructions :-
    -------------------------------------------------



    تتكونالتعليمه الواحدة في الأسمبلي من تمثيل بسيط بالأحرف الأنجليزيه يقابله بالأرقامتعليمة لغة آله ، تتكون كل تعليمة من ممايلي : أولاُ جزء الأمر وهو أمر يدل على نوعالعملية المطلوبة مثل ADD (للجمع) ، الجزء الثاني هو الوسائط علماً بأن بعضالتعليمات لايأخذ وسائط والجزء الآخر وسيطة واحدة فقط والبعض الآخر أكثر من ذلك ،تحدد هذه الوسائط الشئ الذي سيعمل عليه الأمر ،
    فالأمر ADD لوحده عقيم لايدل علىشئ لكن الأمر ADD AX,5 يدل على جمع الرقم 5 مع القيمة الموجودة في المسجل AX ويوضحالمثال التالي بعض الأوامر


    كود:
    clc          ;             فقط أمر بدون وسائط
              dec ax     ;             وسيطة            واحدة فقط
              mov cx,dx; 


    لاحظ أن أي نص في شفرةالأسمبلي يأتي بعد الفاصلة المنقوطة هو مجرد تعليق


    الوسائط ممكن تكونعدة أنواع :-
    -----------------------------------
    1.
    بيانات فورية (مباشرة) (أي ثابته) مثال : 10 / 30 / 'a'

    2.
    مسجل مثال : AX / EAX / BL

    3.
    موقع ذاكره (يتم تحديده عن طريق العنوان) مثال : [200] / [bx] / [100]

    4.
    متغير (وهو نفس السابق لكن بدل أن تحفظ أو تحسب العنوان يدوياً يقومالأسمبلر بأستبدال المتغير برقم يدل على عنوانه ) مثال : count / VAR1 / INTVAL / STR1


    مدخل الى الديبغر Debugge :-
    ------------------------------------
    ها قد وصلنا الى واحد من أقوىالبرامج المبيته في النظام فبواسطة اليبغ تستطيع عمل أشياء عجيبه وغريبه ، حسناًشغل الدوس وعند محث الأوامر أطبع debug ثم أنتر وستظهر لك علامه '-' ليل علىأستعداد الديبغر على أستقبال أوامرك .

    الأن دعنا نكتب هذا البرنامجالصغير


    كود:
    mov ax,2  ;             نقل العدد 2 كمعلومة مباشرة الى المسجل            أي-أكس
              mov bx,3  ;             نقل العدد 3 كمعلومة مباشرة الى المسجل بي-اكس
              add ax,bx ;             جمع أي-اكي مع بي-اكس مع وضع الجواب في أي-اكس / أي-اكس=أي-أكس + بي-أكس


    كيف تقوم بأذخال هذاالكود :-
    --------------------------------
    1.
    عند المحث '-' أدخل a100 أيأننا سنبدأ نكتب الكود من العنوان 100 ثم أضغط أنتر بالطبع
    2.
    الآن أدخل كلتعليميه ثم أضغط أنتر ومع نهاية التعليمية الأخيرة أضغط أنتر مرتين .

    الأنقم بأدخال الرمز R ثم أنتر لترى حالة المسجلات
    لاحظ أن المسجل AX يساوي صفروسترى أيضاَ ظهور التعليميه MOV ax,0002 وهي التعليميه التي عليها الدور في التنفيذوليس المعلومة المنفذه ، الآن قم بطباعة الرمز T ثم أنتر لتنفيذ التعليميه التيعليها الدور هنا هي MOV AX,0002 سترى الآن أن المسجل AX أصبح يساوي 2 وهذا مانتوقعهبالضبط وسترى أيضاً التعليميع التي عليها دور التنفيذ وهي MOV BX,0003 أدخل الرمز T ثم أنتر لتنفيذها لترى أن المسجل BX أصبح يساوي 3 وسترى أيضاً التعليميه التي عليهاالدور في التنفيذ وهي ADD AX,BX قم بأدخال الرمز T لتنفيذها ولاحظ كيف أن المسجل AX أصبحت قيمته مجموع العددين 2+3 وهو خمسة بينما بقى المسجل BX يساوي 3 .

    الآنبعدما عرفت كيف تكتب كود بسيط أخرج من الديبغر بالضغط على Q ثم أدخل مرة أخرىبكتابة الأمر Debug حتى تصفر المسجلات مرة أخرى أدخل التعليميه A100 ثم جرب تكتبكود من عندك ومع كل نهاية تعليميه أضغط أنتر وفي نهاية التعليميه الأخيرة أضغط أنترمرتين
    (
    ملاحظة لترى شفرتك بلغة الآله والأسمبلي أدخل الرمز U ثم أنتر مباشرةبعد إدخال الكود وقبل إدخال الرمز R )
    أضغط R ثم أنتر لترى المسجلات قبل تنفيذأي عملية ولترى التعليميه التي عليها الدور في التنفيذ أضغط T ثم أنتر لتنفذالتعليميه وترى النتائج والتعليميه التي بعدها وهكذا ولاتنسى أذا أردت أن تدخل كودجديد الخروج والعودة مرة أخرى الى الديبغر لتصفر المسجلات والذاكره

 
صفحة 1 من 2 12 الأخيرةالأخيرة

ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •