الدرس الثالث
========
الى من قرأ الموضوعين السابقين لعلك تتساءل ماذا لديك الان و الاجابة لديك الكثير ... بعد قراءة هذا الدرس المفترض ان يكون لديك المقدرة على تتبع برامج بسيطة مكتوبة بلغة الاسمبلي
عناصر الدرس
· المؤشران CS و IP
· المسجل
· اوامر جديدة
· الان ماذا لدينا
CS
اشرنا لهذا المسجل بانه تعليمات يجب تنفيذها و حقيقة كان تعريف دقيق للوظيفة التي يقوم بها الان اقول لكم انه يعني قسم الكود و ساشرح لكم المعني سافترض مدرس يشرح لطلبة درس ما هناك بالطبع سبورة عليها عناصر الدرس و المدرس ليشير الي تلك العناصر يستخدم عصى المدرس اخواني السبورة هي القسم الذى يحتوي معلومات قسم الكود CS بمعنى انه مكان محدد معلوم مكانه تحفظ فيه المعلومات بالطبع اراك الان صديقي تقول ان عناصر الدرس هي التعليمات و اقول لك نعم اصبت و الطالب يا اخي هو المعالج الذي يتلقى هذه التعليمات و للاسف فالمعالج غبي نعم ينفذ الاوامر دون تفكير و علينا توجيهه الي ما يجب فعله و لذا نستخم العصى
IP
نعم هذه هي العصى مؤشر التعليمات لكنها لا تستخدم للعقاب انها فقط تستخدم للاشارة الى المكان الذي يجب الانتباه اليه الان انت تعرف ان هناك مكان ما بالذاكرة يحتوي تعليمات CS و نشير الى أول هذه التعليمات بالمؤشر IP و اذا كنت ما زلت تذكر العناوين فانك الان تعرف معنى العنوان CS:IP
المسجل
اعلم انك تقول اننا تكلمنا مسبقا عن المسجلات و اقول لك صبرا جميلا نعلم ان للحاسب ذاكرة ROM ثابتة التعليات تقريبا و ذاكرة RAM غير ثابتة البيانات لكن كلتا الذاكرتين تأخذ موقع ما بخريطة الذاكرة هذا الموقع يسمى بالعناوين و التي يمكن حسابيا تحديد موقعها و بدايتها و نهايتها المعالج كذلك له ذاكرة RAM و لكنها لا تأخذ عناوين و لكن تأخذ اسماء مميزة محددة تستخدم في تعليمات لغة الالة و نسميها مسجلات
مثل AX,BX,CX …… البعض للاستخدام العام و البعض للاستعمال الخاص و هي اشياء نتعلمها مع مرور الوقت
* عند تشغيل الحاسب تبدأ مسجلات المعالج العمل و يقوم المسجلان CS,IP بعمل خاص جدا حيث يتحدا معا ليكونا أول عنوان يرسله المعالج للوصول الى محتويات الذاكرة
اوامر جديدة
CALL يستخدم لاستدعاء اجراءات من عنوان ما و يأخذ صور مختلفة
CALL 1234 لاستعاء الاجراءات بدءا من العنوان 1234
CALL [EAX] لاستدعاء الاجراءات بدءا من العنوان المخزن داخل المسجل EAX
LDS & LES خاص بتحميل مؤشرات لعناوين ما داخل المسجل DS او ES
LODS تحميل نص من حرف الى جملة يمكن ان تراها كالتالي
LODSB تحميل بايت من العنوان DSE)SI الى المسجل AL و هو مسجل 8 بت
LODSW تحميل كلمة بالعنوان DSE)SI الى المسجل AX و هو مسجل 16 بت 2 بايت
LODSD تحميل جملة بالعنوان DSE)SI الى المسجل EAX و هو مسجل 32 بت 4 بايت
الحرف E بين القوسين هو حرف دال على مسجل 32 بايت في حالة استخدامه
الحرف L هو اختصار الامر LOAD بمعنى تحميل و سنقابله كثيرا باشكال مختلفة مثل
LAHF حمل المسجل AH بحالة المسجل FLAG البيان
LEA حمل العنوان المؤثر تستخدم لتحميل عنوان رسالة نرغب في اظهارها راقب المثال التالي
LEA DX ,MY MESSAGE هذا الامر غايته حفظ عنوان رسالتي
كان يمكن كتابته هكذا
MOV DX , OFFSET MY MESSAGE
MOV AX , SEGMENT MY MESSAGE
MOV DS , AX
نعم نحتاج 3 سطور المتابع معنا يعلم ان SEGMENT : OFFSET يمثلان مكان محدد بالذاكرة عنوان و لذا قمنا في السطرين الاولين بتحميلهم بينما السطر الثالث نستخدم المسجل DS و نسميه مسجل سيجمنت البيانات بالطبع ليصبح لدينا عنوان محدد للرسالة
REP امر للتكرار طالما القيمة لا تساوي صفر
و REPE لقد اضفنا الحرف E وهو بمعنى يساوي و المعنى كرر طالما يساوي
و REPZ الحرف Z له نفس معنى الحرف E وبالتالي فإن REPE==REPZ
و REPNE و REPNZ المعنى هنا اظنك قد عرفته كرر طالما لا يساوي
الآن ماذا لدينا
لدينا مجموعة بسيطة من المفاهيم و أساسيات تمكنا من متابعة برامج بسيطة و على الأقل فهم لأوامر تستخدم كثيرا في الدرس القادم سنتطرق لأوامر أخرى تمكنا من التحرك خطوة كبيرة للامام بإذن الله