الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال في الأسيمبلي

مغلق
بدأه برق في 16 مارس 2005 · 3 رد · 550 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أنا الآن اتعلم الأسيمبلي ، ولاحظت شيئا أريدكم أن تبدوا رأيكم فيه.

بعد أن أخذت فكرة عن assembler ولغة الأسيمبلي بشكل عام وجدت أن لغة الأسيمبلي تنقسم لجزئين :

الجزء الأول هو أوامر المعالج ولا دخل للمبرمج فيه.

الجزء الثاني هي الأوامر والتوجيهات التي وضعها مصمم assembler لكي يسهل الأمر على المبرمج بهذه اللغة سواء كان هذا preprocessor أو directive

هل كلامي هذا صحيح؟

وأيضا

توجد هناك تعليم db على سبيل المثال، هل هي من أوامر المعالج أم أنها خاصة ب assembler ، وإذا كانت خاصة بالأسيمبلر ، فكيف أعرف المكافئ لها بالأسيمبلي؟

وجزاكم الله خيرا.

System Engineer

Red Hat Certified Engineer

Red Hat Certificate Number

805010381752078

#2

وعليكم السلام

خلى بالك معيا يا برق, اوامر الاسمبلى تحول إلى ارقام على سبيل المثال الامر nop يحول إلى الرقم 90h يعنى بالاعداد الستعشريه, هو فى الواقع يحول إلى احاد واصفار, يعنى الذاكره والمعالج لا يعرف سوى الاحاد و الاصفار,

شغلة الكمبايلر هى تحويل الاوامر سواً كانت directive او preprocessor كلها تحول إلى ارقام, لو فتحت كتاب البينتيوم مثلاً على الامر mov تجد التالى:

88/r         mov  r/m8,r8
89/r         mov  r/m16,r16
...
B0+rd         mov  r32/m32,imm32

ينعنى بإختصار عندما تكتب امر مثل

mov eax,10h

يحولها الكمبايلر إلى

 00 10 00 00 00 B0

طبعاً زى ما إنتا عارف الكود بيكون فى مكان والداتا فى مكان اخر, فى مؤشر اسمه ip وهو المسئول عن تتبع الكود وتشغيل البرنامج, يعدى يعلى البرنامج خطوه بخطوه ويترجم الرموز إلى عمليات, اول ما يشوف الرمز B0 يعرف إن الامر هو نقل 32 bit وهو العدد إلى كتبناه إلى هو 10h إلى المسجل eax وهكذا .

يارب تكون الفكره وضحت الان

والسلام

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#3

جزاك الله خيرا

بس في سؤال لم تجب عليه

اقتباس
توجد هناك تعليم db على سبيل المثال، هل هي من أوامر المعالج أم أنها خاصة ب assembler ، وإذا كانت خاصة بالأسيمبلر ، فكيف أعرف المكافئ لها بالأسيمبلي؟

بالإضافة

ما معنى opcode ؟

وعلى ماذا تدل هذه الرموز r/m8,r8 ؟

وهل سأجد شرحا لها في manual ؟

وبارك الله فيك.

System Engineer

Red Hat Certified Engineer

Red Hat Certificate Number

805010381752078

#4

وعليكم السلام

db ليست من تعليمات المعالج ولكن الاسمبلر يقوم بوضع الداله فى الذاكره, وكذالك mov ليست من تعليمات المعالج وإنما يقوم الاسملبلر بوضع الرقم B0 والتى تزمر له.

opcode معناها operation code يعنى بالعربى تعاليم r معناها register يعنى مسجل m معناها memory والارقام هى دلاله على سعه الذاكره يعنى 8 bit الخ.

والشرح موجود فى الmanual بالتاكيد, واول الكتاب تجد الرموز للمسجلات مثلاً eax يرمز لها بى 00 و ebx ب 001 الخ.

اما التعليمات فى موجوده بالتسلسل فى باقى الكتاب.

والسلام

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

هذا الموضوع مغلق.

مواضيع مشابهة