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

مشكلة في تطبيق اول برنامج لي بلغة الاسمبلي

بدأه yousefal في 22 مارس 2012 · 6 رد · 1,985 مشاهدة · في أرشيف قسم الـــ Assembly
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

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

مقدمة الكود ::

org 100h

.data
      array db 10,36,47,84,11,32
      number db 11

.code

     mov ax,array
     mov ds,ax

     cmp....

     inc....

ret
#2

ضع الايندكس حق المصفوفه في السجل esi باستخدام الOFFSET ثم قارن بين العنصر الذي يشير له esi والرقم number بحيث اذا تساويا يعمل jmp للكود المراد تنفيذه عند التساوي

وفي كل مرة زايد الesi

طبعا تحتاج لعمل لوب بحيث تضع عدد التكرارات المراد تنفيذها في السجل ecx على مايفضل

اذا كلامي مش مفهوم لك اذا تحتاج تبدأ بالاساسيات وهي اظهار رسالة على الشاشة ومن ثم تدرج

−1

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#3

انا الصراحة كل ما اعرفه هو امري add , mov فقط وبعض الاوامر المعدودة الاخرى البسيطة .. والصراحة شرحك مش مفهوم .. المشكلة اني مش قادر اتدرب عليها ولا الاقي دورة او مصدر من الانترنت لاتعلم منه كل نسخ من بعضه .. الله يخليك تساعدني او تضع الكود جاهز وفيه اخطاء بسيطة وانا احاول اصلحه .. والله بكون ممنون الك......

#4

ابدأ بكتاب the art of assembly نسخة 16 بيت متوفره للتحميل المجاني وعبارة عن 1400 صفحة

الرابط الخاص بي

هذا الموقع به كل ما يخص الكتاب

اما رابط تحميل الكتاب فهو

الرابط الخاص بي

اذا تشتي كتاب اصغر فهناك كتاب Assembly Language for x86 Processors, 6/e

للكاتب Irvine على العموم علشان تتطبق البرامج ضروري ترجع لصفحة الكتاب في الانترنت اللي فيها شرح كيف تطبق الاكواد

كتاب ايرفاين خاص بنظام تشغيل ويندوز والاسمبلر حق ميكروسوفت

1

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#5

اخي شكرا لمجهودك .. انا لا ادرس مادة الاسمبلي .. هي مجرد وحدة واحدة من كتاب خليط والمشكلة انها اصعب من لغات المستويات العليا .. انا برأيي الشخصي بعد البحث على الانترنت حرام ان يتعلمها شخص عن طريق الانترنت .. بل يجب ان تكون عن طريق شخص اخر .. لذا اريد اتباع اسلوب التعلم من خلال الاكواد نفسها .. الطريف في الامر ان دكتورنا ضعيف ويطبق الاكواد امامنا ويظهر فيها اخطاء ..! ،، لذا ارجوك ان تساعدني بكتابة الكود مع الاخطاء وانا احاول تصليحها .. لان اقسم بالله loopو امور اخرى انا لا افقه فيها شيئا كمان بشوف مثلا int21h لا ادري معناه بالمرة ...

#6

اخي امر الint 21h امر متقدم جدا حتى في كتاب ايرفين مشروح في الوحده الاخيره

على العموم مافي ضرر من شرح الامر

الامر int يقوم بعمل مقاطعه للمعالج Interrupt اي يعني يوقف المعالج من العمل لكي يقوم بعمل خدمه للمقاطعهinterrupt service باستدعاء برنامج معين يسمى برنامج الخدمهinterrupt service routine والذي هو في الغالب عبارة عن داله تقريبا

الامر int 21h يقوم بتنفيذ مقاطعه خاص بنظام الدوز وهو يعمل في نظام ال16 bit فقط

الان عرفت ان المقاطعه من النوع 21h تقوم بعمل استدعاءات لنظام دوز ولكن كيف تتم؟

يتم استدعاء عدة دوال حسب القيمة الموجوده في السجلين AH, DL حيث AH يكون بداخله نوع الدالة التي يتم استدعاءها وDL يكون بداخله معاملات هذه الدالة

مثال

كتابة حرف على الشاشه باستخدام الاستدعاء من النوع الثاني

mov ah, 2
mov dl, 'A'
int 21h

السجل ah فيه 2 مما يعني انه سيتم استدعاء الداله التي تقوم بطباعة حرف واحد على الشاشه

السجل dl فيه 'A' مما يعني ان هذا الحرف هو المعامل الذي تستقبله هذه الداله

الامر int 21h يقوم بتنفيذ المقاطعه

وهكذا دواليك

دعني اكرر مرة اخرى : ابدأ بالاساسيات : مكونات المعالج ، انواع اوامر الاسمبلي ، بينة برامج الاسمبلي ثم تدرج نحو الحلقات التكرارية وغيرها

تم تعديل هذه المشاركة بواسطة mental-driller في 23 مارس 2012 في 22:52

1

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#7

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

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