mohammedkoraim.ahlamontada.com

أهلا بك زائرنا العزيز أنت غير مسجل في المنتدي
و نتشرف بك إذا أردت الانضمام الي منتدانا الغالي
https://mohammedkoraim.ahlamontada.com

انضم إلى المنتدى ، فالأمر سريع وسهل

mohammedkoraim.ahlamontada.com

أهلا بك زائرنا العزيز أنت غير مسجل في المنتدي
و نتشرف بك إذا أردت الانضمام الي منتدانا الغالي
https://mohammedkoraim.ahlamontada.com

mohammedkoraim.ahlamontada.com

هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

منتدي نحن يقدم كل جديد من الاغاني و الافلام والحلقات الاخيره من المسلسلات والالعاب والكرتون و غيرها من الكتب وكل ماتريده و يويو فارس للحب و مشاكله و علاجها معنا نحن كل جديد


    البرمجة بلغة أسيمبلي (2) – سؤال وحله قم بكتابة كود يعمل على اظهار علامة# Hash include

    avatar
    Admin
    Admin


    عدد المساهمات : 541
    تاريخ التسجيل : 31/12/2009
    العمر : 33

    البرمجة بلغة أسيمبلي (2) – سؤال وحله قم بكتابة كود يعمل على اظهار علامة# Hash include Empty البرمجة بلغة أسيمبلي (2) – سؤال وحله قم بكتابة كود يعمل على اظهار علامة# Hash include

    مُساهمة من طرف Admin الخميس مايو 13, 2010 9:06 pm



    البرمجة بلغة أسيمبلي (2) – سؤال وحله
    In Tech on November 7, 2008 at 11:06 am

    مرحباً اعزائي

    يبدو انني ساتفرغ هذه الفترة لاكمال الجزء الثالث ان شاء الله من هذه الدروس، ونظراً لبعض الرسائل التشجيعية التي تصلني على بريدي ساواصل ان شاء الله في كتابة المزيد حتى ينتهي مخزوني.

    اليوم وفي هذا الدرس سنقوم بحل السؤال البسيط التالي:

    س1: قم بكتابة كود يعمل على اظهار علامة# Hash include

    ملاحظة: فيديو يشرح طريقة الحل مدرج في نهاية التدوينة،متاح للتحميل ايضاَ.


    الحل:

    كود هذا التطبيق هو من اسهل ما يكون، ولكن قبل ان اقوم بالبداً بحل السؤال، ينبغي الاشارة الى بعض الامور الهامة التي تطبق وتكتب في اي برنامج بلغة الاسيمبلي:

    اولاً: اي برنامج يكتب يجب ان يحتوي في المقدمة على الاسطر البرمجية التالية

    .Model Small

    .Stack 100h

    .Code

    Main PROC

    يمكنني القول ان هذه الاسطر يجب ان تحفظ تماماً لانها ثابتة في اي برنامج آخر كما ستلاحظون في الدروس السابقة، الا ان هنالك بعض التطبيقات التي تحتوي على بيانات يجب ان يتم الاشارة اليها ضمن هذه الاسطر الاربعة لكي تصبح 5 سطور، لن استبق الاحداث من الآن، لاننا سناخذ تطبيقات كثيرة بهذا الخصوص.


    السطر الثاني Stack 100h : الستاك هو المكان الذي سحتفظ فيه العمليات الحسابية لحين الانتهاء منها والحصول على الناتج النهائي منها حيث تنقل الى مكان آخر يسمي Register

    فمثلاً: 5 + 4 *9 = ?

    هذه العملية الحسابية ستبدأ بضرب الرقم 4 بالرقم 9 وناتج الضرب الذي يساوي 36 سيخزن في الستاك، ثم يتم اكمال العملية بجمع الناتج الاول وهو 36 الى 5 ليصبح الناتج 41 ، الان انتهت مهمة الستاك في حفظ الرقم ، وسيتم نقل الرقم الى Register معين آخر ليمكننا من التعامل مع اسم هذا الـ Register فيما بعد ضمن الكود.

    ملاحظة: يلزمنا تذكر قوانين اولوية العمليات الحسابية وهي

    الضرب ثم القسمة ثم الجمع ثم الطرح وآخر اثنين لا مشكلة في التعامل معهم.

    نبدأ الآن بالكود

    الكود الاول : وهو الكود الذي سنستخدمه في اظهار علامة الهاش انكلود

    mov ah,2

    mov dl,’#‘

    int 21h

    السطر الاول والثالث اجباري تماماً ولا يمكن التغيير فيه “لغاية الآن على الاقل”

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

    الان السؤال الذي يطرحه الجميع هو : ما هي mov?

    mov في الاسيمبلي هي اختصار لكلمة Move المعروفة وهي هنا تعني : حرِّك

    في انتل يكون التحريك بهذه الطريقة

    mov R1,R2 ، حيث ار 1 و ار 2 افتراضيتان

    قيمة او محتوى R2 سينتقل الى R1 لتصبح R1 تحمل قيمة او محتوى R2 ومن هنا نتوصل الى العلاقة التالية:

    mov Destination, Source

    حيث قيمة الـ Source ستخزن في الهدف Destination

    وللمعلومة: في انظمة موتورولا يكون العكس اي mov Source, Destination

    ولكن ليس باليد حيلة، هكذا تريدها انتل..ليس هذا موضوعنا

    الآن فهمنا مضمون السطور الثلاثة المسؤولة عن اظهار اشارة # ، و الان انتهينا من تفعيل الكود ونريد الخروج منه الى الدوس Dos ليقوم بطباعة الامر، وللخروج الى الدوس يكون من خلال السطرين البرمجيين التاليين ( على القافية) :

    mov ah,4ch

    int 21h

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

    ملاحظة بسيطة: 4ch وايضا 21h هي ارقام بنظام الهكساديسمال Hexadecimal او ما يسمى بالعربية بالنظام السادس عشر او بنظام العد السادس عشر.

    الآن يجب ان نقوم بكتابة سطرين اخيرين ليس الا، لانهاء البرنامج وهما

    Main EndP

    End Main

    نستنتج : السطور الاربعة الاولى والسطرين اللذان يقومان باخراجنا الى الدوس وايضا اخر سطرين لانهاء البرنامج هما ثابتين الى يوم القيامة، الا الاربع الاسطر الاولى كما اشرت فانها ثابتة ولكن في التطبيقات التي تحتوي على بيانات Data نقوم باضافة سطر اخر وربما سطرين وربما اكثر بحسب ما لدينا، هذا كله سنراه في امثلة قادمة ان شاء الله.

    - انتهينا من كتابة البرنامج ونريد تطبيقه، وهي اسهل ما في الامر، ويتم ذلك كما يلي:

    File > Save as

    سيكون المسار الافتراضي للحفظ هو c:\tasm\BIN

    لسهولة الوصول الى التطبيق كم بترك المسار كما هو ولكن قم بتسمية التطبيق باي اسم تختاره ولكن لا تنسى ان تكتب في نهاية الاسم .ASM

    مثال: mb.ASM

    ثم اضغط OK

    تم حفظ التطبيق بسلام، الان نخرج من Tasm من ملف ثم خروج وبذلك نعود الى الدوس ونبقى في المسار

    C:\tasm\BIN>

    الان لعرض معلومات البرنامج للتاكد من خلوه من الاخطاء نكتب Tasm ثم اسم الملف متبوعاَ بـِ .ASM

    tasm FileName.ASM

    ليصبح الامر كتالي:

    C:\tasm\BIN>tasm mb.ASM

    ونضغط انتر، فتظهر لنا معلومات البرنامج

    اهم ما نريده منها معرفة اين هي الاخطاء ان وجدت طبعا وف اي سطر، ان وجدت، عد الى الكود واذهب الى السطر المشار اليه وقم بتفقده تماماً

    بعد ذلك، وان مرت الامور بسلام ان شاء الله تعالى يتبقى لنا استخراج البرنامج اي Execute ليصبح

    .exe

    وللقيام بذلك نكتب بعد الامتداد الذي سيظل ثابثاً C:\tasm\BIN> ما يلي

    C:\tasm\BIN>Tlink mb

    لاحظوا هنا انا صيغة الاستخراج هي Tlink FileName ولكن بدون .ASM

    سيظهر لنا السطر التلقائي التالي:

    Turbo Link Version 6.00 Copyright (c) 1992, 1993 Borland International

    ربما تختلف الارقام بحسب نوع الاصدار ، ولكنها عموماً بهذه التركيبة

    ظهور هذه الجملة تعني انه تم الاستخراج بنجاح ، وا تبقى الا البدأ بتنفيذ البرنامج على طول، وللتنفيذ نقوم بكتابة اسم التطبيق بعد صديقنا الجذر C:\tasm\BIN>

    C:\tasm\BIN>mb (OR) mb.exe


    اما mb او mb.exe بحسب الاسم ،، وسواء اضفت .exe او لم تضف فالنتيجة نفسها.

    استمتع، ظهرت علامة #

    بعض الملاحظات:

    •لا فرق في كتابة الكود سواء بحروق كبيرة Capital Letters او بحروف صغيره Small Letters وما اكتبه انا انما هو نتيجة التعويد على شكل معين لكتابة الاوامر، في النهاية لا فرق ابدا.
    •من الوهلة الاولى يبدو ان العملية صعبة وطويلة مملة، لكن انسخ هذه المقالة داخل ملف مفكرة، وقم بحذف ما كتبته انا، ستجد انها لا تزيد عن 10 اسطر فقط.
    •حان وقت الاسترخاء، وتناول كوب قهوة
    •نلتقي من جديد ان شاء الله في الاسبوع ما بعد المقبل نظراً لان الاسبوع الاقادم ستبدأ اختبارات الـ Firstلهذا الفصل
    الفيديو – يجب ان يدعم متصفحك مشغل الفلاش

      الوقت/التاريخ الآن هو الإثنين أبريل 29, 2024 1:47 am