الأربعاء، 11 مايو 2016

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

المسجلات : و سنفترض انها وسائط تخزين للبيانات بكافة انواعها
AX يستخدم للعمليات الحسابية و تخزين البيانات
BX و تسمى بالقاعدة و تستخدم مرتبطة مع المسجل AX 
CX العداد العداد
DX مسجل البيانات 
DI وجهة تخزين البيانات او المكان الذي سوف تخزن به الحروف
SI فهرس المصدر المكان الذى تنسخ منه الحروف
يمكن استخدام المسجل 6 و 7 كمصدر و هدف لعمليات الحروف

مسجلات الفهرس و السيجمنت*SEGMENT

BP مؤشر القاعدة و هو يشير الى مكان محدد بالمخزن STACK
SP مؤشر المخزن نفسه
CS تعليمات واجبة التنفيذ
DS بيانات يحتاج لها التطبيق
ES مقاطع اضافية للتخزين
SS المخزن STACK 
* السيجمنت SEGMENT هو قسم او جزء من الذاكرة لتخزين السجلات وساسميه دائما سيجمنت فتنبه اخي لذلك

[ المسجلات المضاعفة هي السجلات التي اضيف اليها الحرف E و كمثال على ذلك المسجل AX يخزن 16 بت بينما المسجل EAX يخزن 32 بت]

مسجل البيان FLAG

يسمى بالعلم و الراية لكن غرضه بيان حالة ما
O يبين حالة عدم الاتزان و ينتج من العمليات الحسابية مثل الاستعارة
D لتحديد الاتجاه
I لاغراض المقاطعة
T للتتبع
S تحديد الاشارة سالب او موجب للرقم
Z هل الناتج صفر يدل على التكافوء و عدم التكافؤ المساواة

P القطبية و عدد الواحدات فردي وزوجي الاعداد الخ
C الرفع (كما لو قلنا 5+6 = 1 و معانا واحد)
سيتم شرح ما نحتاجه من دلائل البيان ال 10 في الدروس القادمة و نلاحظ
كل سيجمنت يقسم الى اوفست OFFSETS
الاوفست رقم من 00000000 الي FFFFFFFF لويندوز 9X و ما بعده
و بالتالي هناك 65.536 سيجمنت بالذاكرة
و بالتالي هناك 65.536 عنوان بالذاكرة
مؤشر التعليمات IP [لا تستعملها] تشير الي التعليمة التالية
العنوان (مكان محدد بالذاكرة) شكله كلاتيSEGMENT:OFFSET
يمكن التشبيه بما يلي التطبيق=كتاب السيمنت=الصفحة و الاوفست=سطر و ايضا الاوفست =IP مؤشر التعليمات 

التعليمة CS:IP تشير الى عنوان التعليمة التنفيذية التالية بالذاكرة

التعليمةSS:SP تشير الى عنوان الموقع الحالي للمخزن لاحظ اوفست=SP





الى من قرأ الموضوعين السابقين لعلك تتساءل ماذا لديك الان و الاجابة لديك الكثير ... بعد قراءة هذا الدرس المفترض ان يكون لديك المقدرة على تتبع برامج بسيطة مكتوبة بلغة الاسمبلي 

عناصر الدرس

· المؤشران 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 المعنى هنا اظنك قد عرفته كرر طالما لا يساوي

الآن ماذا لدينا

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




الدرس الرابع 
البرنامج الاول



سنفوم في هذا الدرس بكتابة اول برنامج بلغة الاسمبلي و لضمان وجود نفس البرنامج المشغل لدى الجميع فسوف استخدم الامر DEBUG

و لتفعيله كل ما علينا هو 

· START > RUN

اكتب COMMAND ثم اضغط OK

في نافذة الدوس اكتب DEBUG ثم اضغط ادخال

· الان امامك علامة – 



يهمنا الان معرفة بعض الاوامر التي تستخدم مع DEBUG

A تحديد عنوان بداية كتابة البرنامج و عادة 100

Q انهاء 
R اظهار محتوى المسجلات
T تتبع التعليمات

لبدء التعامل كما ذكرنا في نافذة الدوس 

C:/>Debug [Enter]

في السطر التالي يظهر (-)

-

سنستخدم اول امر و هو r 

-r[Enter]

هذا الامر لاظهار المسجلات الداخلية لنقل سيظهر مثلا

C:WINDOWSDesktop>debug

r-

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=1B97 ES=1B97 SS=1B97 CS=1B97 IP=0100 NV UP EI PL NZ NA PO NC

1B97:0100 CF IRET

الان لنظهر مسجل محدد علينا ان نضيف فقط اسم المسجل كما يلي

-r bx 
BX 0000
:

لاحظ ان ال (-) موجودة مسبقا فقط كتبنا r ثم مسافة ثم bx 

السطر الثاني يظهر قيمة المسجل bx 

السطر الثالث ينتظر قيمة جديدة أو اضغط ادخال للاحتفاظ بالقيمة الحالية

بنية السطر في Assembler

الجزء الاول على اليمين تعليمة الامر

الجزء الثاني عبارة عن معاملات الامر راقب ما يلي

add ah,bh

الامر add و يستخدم للجمع

بينما ah و bh هما معاملات الامر و المفترض انه سيتم جمعهما

mov al, 25

سبق التعرف على هذا الامر هنا معناه اجعل قيمة المسجل al=25 

add al,[170]



اضف محتوى العنوان 170 الى المسجل al 

البرنامج الاول

لا نستطيع استخدام DEBUG في كتابة برنامج اكبر من 65 كيلو

و بلغة المبرمجين سعته 1 سيجمنت فقط و يستخدم لكتابة برنامج .COM و لا يستخدم لكتابة برنامج .EXE

و لذلك نبدأ من 100 و هو موقع بداية برامج . COM

البرنامج بسيط يضع قيمتين داخل المسجل AX و المسجل BX

ثم يقوم بجمعهما لنبدأ

C:WINDOWSDesktop>DEBUG

-a 100
-0D62:0100 mov ax,0002
-0D62:0103 mov bx,0004
-0D62:0106 add ax,bx
امر لا تفعل شيء و نستخدمه للانتهاء-0D62:0108 nop 
لا نكتب شيء فقط نضغط ادخال 0D62:0109-

الان لدينا البرنامج للتبع التعليمات فانن نكتب T ثم ادخال 

و المطلوب منك ملاحظة ما كتب باللون الازرق

T-

AX=0002 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0D62 ES=0D62 SS=0D62 CS=0D62 IP=0103 NV EI PL NZ NA PO NC
0D62:0103 BB0400 MOV BX,0004

نكتب امر التتبع T ثانية لنرى تنفيذ السطر الثاني من البرنامج

-T
AX=0002 BX=0004 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0D62 ES=0D62 SS=0D62 CS=0D62 IP=0106 NV EI PL NZ NA PO NC
0D62:0106 01D8 ADD AX,BX

نكتب امر التتبع T لنرى تنفيذ السطر الثالث من البرنامج

-T

AX=0006 BX=0004 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0D62 ES=0D62 SS=0D62 CS=0D62 IP=0108 NV EI PL NZ NA PE NC
0D62:0108 90 NOP

ما اردت ان تلاحظه هو التغير في قيم المسجلات و حددتها باللون الازرق بينما اللون الاحمر عبارة عن كود الامر الازرق الذي يليه

يمكنك الان كتابة الامر Q

و ذلك لنهاية التطبيق و لانتهاء الدرس






ليست هناك تعليقات:

إرسال تعليق