العودة   منتديات عشاق السودان > منتديات الكمبيوتر والإنترنت > منتدى البرمجة
التسجيل مستضيف الصور التعليمـــات قائمة الأعضاء التقويم البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

رد
 
LinkBack أدوات الموضوع طرق مشاهدة الموضوع
قديم 19-03-2007, 19:38   رقم المشاركة : 1 (permalink)
معلومات العضو
المحقق كونان
عضو متواصل
 
الصورة الرمزية المحقق كونان
 

 

 
إحصائية العضو









المحقق كونان غير متواجد حالياً

 

إحصائية الترشيح

عدد النقاط : 10
المحقق كونان is on a distinguished road

 

 

دورة في لغة التجميع (الاسمبلي)


بسم الله

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

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

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

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

التوقيع

المحقق كونان غير متواجد حالياً   رد مع اقتباس
قديم 21-03-2007, 10:42   رقم المشاركة : 2 (permalink)
معلومات العضو
 
إحصائية العضو









محمد الامين عبدالرحيم غير متواجد حالياً

 

إحصائية الترشيح

عدد النقاط : 10
محمد الامين عبدالرحيم is on a distinguished road

 

 

مشاركة: دورة في لغة التجميع (الاسمبلي)

المقحق كونان

يديك العافيه

لكن ياحبذه لو بدية

من التعريف يعني ما هية لغة التجميع

التوقيع



غشاشا يا نسل الكجر

حكمتي زيفك في البشر


محمد الامين عبدالرحيم غير متواجد حالياً   رد مع اقتباس
قديم 25-03-2007, 14:41   رقم المشاركة : 3 (permalink)
معلومات العضو
romansy
عضو مشارك
 
الصورة الرمزية romansy
 

 

 
إحصائية العضو









romansy غير متواجد حالياً

 

إحصائية الترشيح

عدد النقاط : 10
romansy is on a distinguished road

 

 

مشاركة: دورة في لغة التجميع (الاسمبلي)

هذه هي المواضيع اللي بتفتح النفس ...

اقتباس:
يعني ما هية لغة التجميع
ببساطه لغه التجميع Assemby Language عباره عن رموز معينه اختصار لمجموعه من 1و0 ... يعني هي تسهيل للغه الاله Machine Language ،،

يعني بدل لما يكتب البرمج كود مثلا يتكون من 11110111 01011 0111 01 يقوم بوضع الرموز بدل هذه التعليمات وتصبح مثلا ADD AX,BX ... يعني هي للتسهيل فقط ..

كل معالج يحتوي على لغه اله خاصه فيه ، لذلك البرنامج المتكوب مثلا في معالجات انتل لا يعمل على معالجات متورولا .. وهكذا ..

واول معالج 16 بت ظهر هو 8086 وبعدها تتطور الامر واصبح هناك معالجات 32 بت وحاليا 64 بت ، هذا يعني انه لغه الاسملي ايضا تتطور ..

واخونا المحقق جزاه الله خير ، يتكلم الان عن المعالج 8086 , , وطبعا هذا المعالج يعتبر الاساس وفي حاله تعلمت البرمجه عليه تستطيع ان تنتقل الى اي معالج ..

اي سؤال يرحب به ...

تحياتي
romansy غير متواجد حالياً   رد مع اقتباس
قديم 25-03-2007, 22:22   رقم المشاركة : 4 (permalink)
معلومات العضو
demon
عضو مميز
 
الصورة الرمزية demon
 

 

 
إحصائية العضو








demon غير متواجد حالياً

 

إحصائية الترشيح

عدد النقاط : 20
demon is on a distinguished road

 

 

مشاركة: دورة في لغة التجميع (الاسمبلي)

شباب يديكم الف عافية

الموضوع جميل لكين للتسهيل بس بقترح
ان يشمل الشرح كيفية كتابة البرنامج واين يكتب وكيف ينفذ وذالك لان العامة لا تعرف كيف تعمل الاسمبلي

وشكراً

التوقيع

demon غير متواجد حالياً   رد مع اقتباس
قديم 26-03-2007, 01:56   رقم المشاركة : 5 (permalink)
معلومات العضو
romansy
عضو مشارك
 
الصورة الرمزية romansy
 

 

 
إحصائية العضو









romansy غير متواجد حالياً

 

إحصائية الترشيح

عدد النقاط : 10
romansy is on a distinguished road

 

 

Cool مشاركة: دورة في لغة التجميع (الاسمبلي)

حسنا اخي ، على العموم ننتظر صاحب الموضوع حتى لا يتشتت الموضوع ..

تحياتي
romansy غير متواجد حالياً   رد مع اقتباس
قديم 02-08-2007, 10:31   رقم المشاركة : 6 (permalink)
معلومات العضو
المحقق كونان
عضو متواصل
 
الصورة الرمزية المحقق كونان
 

 

 
إحصائية العضو









المحقق كونان غير متواجد حالياً

 

إحصائية الترشيح

عدد النقاط : 10
المحقق كونان is on a distinguished road

 

 

مشاركة: دورة في لغة التجميع (الاسمبلي)

اعزائ عشاق السودان المبرمجين

ناسف جدا لعدم اكمال الدورة

لظروف وجودي خارج الخرطوم في رحلة عمل

والان تتواصل الدورة
واسال الله ان ينفع بها الجميع
ولك التحية

التوقيع

المحقق كونان غير متواجد حالياً   رد مع اقتباس
قديم 02-08-2007, 10:45   رقم المشاركة : 7 (permalink)
معلومات العضو
المحقق كونان
عضو متواصل
 
الصورة الرمزية المحقق كونان
 

 

 
إحصائية العضو









المحقق كونان غير متواجد حالياً

 

إحصائية الترشيح

عدد النقاط : 10
المحقق كونان is on a distinguished road

 

 

مشاركة: دورة في لغة التجميع (الاسمبلي)

الدرس الثاني :



المخزن stack

· هو جزء من الذاكرة لتخزين أشياء مختلفة

· يتم التخزين باستخدام الأمر push

· يتم استدعاء القيمة المخزنة بالأمر pop

· إذا قمت بتخزين عدة قيم فأول قيمة يتم تخزينها هي آخر قيمة تسترد

يمكن التشبيه للقيم المخزنة بمجموعة أطباق عند وضعهم فوق بعضهم البعض

فان أول طبق يوضع أسفلهم و لكي نحصل عليه يجب ان نرفع ما فوقه أولا

[في لغة التجميع يمكن استخدام نفس الطبق عدة مرات]

مثال

Push ax معناها خزن محتوى المسجل ax في الذاكرة ...1 (الطبق الأول)

Mov ax, 1 ضع القيمة 1 داخل المسجل ax

Push ax معناها خزن محتوى المسجل ax في الذاكرة ...2(الطبق الثاني)

………..

………..

pop ax يتم استرداد القيمة 2 وهي في مثالنا الحالي =1

Pop ax يتم استرداد القيمة 1 و التي تم تخزينها أولا

الأمر mov

تطرقنا لهذا الامر في المثال السابق و هو يكافئ الأمر let لمن لديه فكرة عن لغة البيسك بالنسبة للغة التجميع فهي اختصار للفعل move بمعنى انقل او حرك لقيمة معينة الى داخل السجل و يأخذ احد هذه الأشكال

· Mov eax,00000001 انقل القيمة داخل المسجل eax

· Mov eax,ebx اجعل قيمة eax تكافئ قيمة ebx

· move ax,[ebx] اجعل قيمة eax تكافئ القيمة الموجودة بالعنوان المحفوظ داخل المسجل ebx

نلاحظ ان

· [ebx] تعني محتوى عنوان داخل المسجل و ليس المسجل نفسه

· الحرف e ببداية المسجلات لاننا نتعامل مع مسجلات 32 بت

· يمكن وضع عنوان للذاكرة بالمسجل و التعامل مع العنوان بعد ذلك عن طريق المسجل

· ما ينطبق على الامر mov ينطبق على باقي الاوامر من حيث التعامل مع القيم و محتويات المسجلات و محتويات العناوين المحفوظة بالمسجلات

الامر CMP

· الامر يعني قارن بين قيمتين

· يؤثر على الحالة Z للبيان FLAG

· Z تساوي 1 بمعنى ان الناتج من المقارنة =0 أي تساوي القيمتين

· عدا ذلك فان Z تساوي 0 دلالة على عدم تساوي القيمتين

· CMP EAX,5 قارن قيمة بمحتوى المسجل

· CMP EAX,ECX مقارنة محتوى مسجلين

· CMP EAX,[EBX] مقارنة محتوى مسجل بمحتوى عنوان

الامر JMP

· سأقول ببساطة انه يعني اذهب الى

· JMP ECX اذهب إلى ماذا ؟ سأخبرك سأفترض أن محتوى المسجل EAX هو XX هل تذكر الاوفست إذا فاعلم أن OFFSET=XX العبارة الان واضحة اذهب الى السطر XX

· JMP 018249 الأمر سهل مباشر اذهب الي السطر 018249

· الأمر يشبه GOTO بلغة البيسك

التوقيع

المحقق كونان غير متواجد حالياً   رد مع اقتباس
قديم 02-08-2007, 11:01   رقم المشاركة : 8 (permalink)
معلومات العضو
المحقق كونان
عضو متواصل
 
الصورة الرمزية المحقق كونان
 

 

 
إحصائية العضو









المحقق كونان غير متواجد حالياً

 

إحصائية الترشيح

عدد النقاط : 10
المحقق كونان is on a distinguished road

 

 

مشاركة: دورة في لغة التجميع (الاسمبلي)

الدرس الثالث


========

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

عناصر الدرس

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

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

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

التوقيع

المحقق كونان غير متواجد حالياً   رد مع اقتباس
قديم 02-08-2007, 11:07   رقم المشاركة : 9 (permalink)
معلومات العضو
المحقق كونان
عضو متواصل
 
الصورة الرمزية المحقق كونان
 

 

 
إحصائية العضو









المحقق كونان غير متواجد حالياً

 

إحصائية الترشيح

عدد النقاط : 10
المحقق كونان is on a distinguished road

 

 

مشاركة: دورة في لغة التجميع (الاسمبلي)

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



سنفوم في هذا الدرس بكتابة اول برنامج بلغة الاسمبلي و لضمان وجود نفس البرنامج المشغل لدى الجميع فسوف استخدم الامر 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

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

التوقيع

المحقق كونان غير متواجد حالياً   رد مع اقتباس