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

شرح الاداة VKDEBUG

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

السلام عليكم

اعلم اننى مقصر جداً فى الاونة الاخيرة ولكن ظروف العمل تضطرنى لذلك...

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

يسم الله نبداء

الادوات التى تحتاج إليها هي

Masm32

يمكنك تحميل اخر إصدار من موقع www.masm32.com

RadASM

موقع البرنامج هو http://radasm.visualassembler.com/

قم بتنصيب البرنامج الاول, اما البرنامج الثانى فلا يحتاج إلى تنصيب فقط ضعه فى مجلد c:\RadASM

لن اشرح طريقة التنصيب لانه من المفترض اي شخص يرغب فى تعلم الاسمبلى لابد ان يلم باساسيات إستخدام الحاسوب..

بعد ان تنتهى من عملية التنصيب إذهب إلى المسار c:\masm32\vkdebug وشغل الملف setup.bat.

الان اصبح لديك البيئة التى تستطيع من خلالها ان تبرمج اسمبلى فى نظام وندوز...

افتح البرنامج المرفق وضعة فى ملف, جرب البرنامج وسف تلاحظ انه يفتح نافذتين, النافذة الاولى هى البرنامج والنافذة الثانية هى نافذة الـdebug والتى من خلالها تستطيع مراقبة المتغيرات وما يحدث فى برنامجك..

عمل البرنامج هو حساب الـمضروب لعدد معين, طبعاً العدد محدد ب 10 فى البرنامج يعنى لا تستطيع حساب مضروب عدد اكبر من 10...

عموماً البرنامج ليس هو هدفنا وإنما هدفنا هو عمل debug....

والان لمعرفة ما يحدث عليك بتشغيل برنامج RadASM وفتح الملف Factorial.rap , من القائمة التى تكون على اليسار اختر Factorial.inc تلاحظ اننا استخدمنا المكتبه التالية

include debug.inc

includelib debug.lib

هذه المكتبه هى التى تساعدنا على عملية الـdebug بمجرد إضافتها يمكننا ان نختار إما ان يكون البرنامج فى وضع debug او فى وضعه الطبيعى اى بدون نافذة نراقب من خلالها المتغيرات..

لاحظ اننا اضفنا السطرين التاليين

DBGWIN_DEBUG_ON = 1  
DBGWIN_EXT_INFO = 1

بوضع القيم تساوى 0 نغلق عملية الـ debug وبوضعهما القيمة 1 نشغل عملية مراقبة البرنامج والمتغيرات..

والان نختار رموز سهلة الاستخدام بدل الرموز التى تستخدمها مكتبة الdebug

PH  equ <PrintHex>
PD  equ <PrintDword>
PT  equ <PrintText>
PSBA  equ <PrintStringByAddr>
PL  equ <PrintLine>

واخيراً يمكننا مراقبة اي متغير او كتابة اى نص فى صفحة الـ debug من خلال اختيار الرمز المناسب من القائمة المدرجة اعلاه...

اى اسئلة وإستفسارات ؟ راقب عمل البرنامج وستفهما بإذن الله, وإلا فإطرح سؤالك وإن شاء الله تعالى نجيبك ...

اعتذر لركاكة الاسلوب فى التعبير ولكن هذا ما سمح لى به وقتى حالياً

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

Factorial.zip

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

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

#2

لا اعلم ما يجري.. الموضوع مهم ولا ارى اي تفاعل معه.. هل هو صعب الى درجة لم نعي منه شئ او انه رائع الى درجة تعجز الاصابع عن طباعة اي تعليق (مع الابتعاد عن كلمات الشكر!!)

اخي احمد انا اطلعت على الكود وما يميزه عن غيره هو استخدامك للماكرو لكي تسمح لمن يريد ان يقوم بعمل تنقيح له ان يرى تعليقات مختلفة تبين عمل كل اجرائية ونحن في بيئة التنقيح.. فكرة رائعة وساقوم (بلطشها) منك في دروس قادمة :D جزاك الله الخير

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#3

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

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

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

#4

لا تزعل ولا يهمك واذا ولا بد انا بزعل معاك, ولو.. انا شايف حسان بالقسم.. اكيد رح يشارك معنا الزعلة :D

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#5

أنا اتبعت كل الخطوات للنهاية و حابب أسأل لكن حاسس إن الأسئلة قد تبدو غبية ....

- يعنى إيه الإمتداد rap عشان أول مرة أشوفه ....

- ما فهمته أن الدرس يعلم حاجتين ... إظهار debug لأى برنامج و فى نفس الوقت بلغة ميسرة ... هل أنا كدة صح ...

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

#6

السلام عليكم

ملف rap ينشئة برنامج RadASM وليس جزء من لغة الاسمبلى, يعنى بإختصار ملف يحتوى على معلومات عن المشروع اسماء الملفات الخاصة بالمشروع مسار البرنامج الخ...

السؤال الثانى نعم البرنامج هو عبارة عن برنامج بسيط يقوم بحساب المضروب بطريقتين, وفى نفس الوقت نافذة debug حتى تستطيع تتبع البرنامج ومشاهدة ما يحدث للمتغيرات ...

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

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

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

#7

hi Xacker

do u like words like Good or Thanx or "Shed 7elak"

:)

الموضوع معقد بالفعل بالنسبة للمبتدئين و اعتقد حينما ينتهوا من فهم الامثلة و تطبيقها ستجد التعليقات و الاستفسارات و التى ستثبر اعصابك ايضا و تحبطك فى احيان اخرى :P

و لكنه مجهود رائع تحسد عليه

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

:)

#8

((كلمة بمعنى الشكر غير كلمة شكرا)) جزيلا..

جاري القراءة وانتظر الاسئلة

تم تعديل هذه المشاركة بواسطة allko في 17 نوفمبر 2005 في 15:59

#9

هل هذا ما يجب ان نحصل عليه...حسنا البرنامج (اقصد ال debugger) يخبرني بان البرنامج قد بدا ثم يظهر لي القيمة التي ادخلتها بمختلف الانظمة العددية(dec,bin,hex) ثم يظهر لي النتيجة...وفي كل مرحلة فانه يضع تعليقا،بالاضافة الى "امر" <<هل هو كذلك؟

لم اعرف ما هو لكن اعتقد انه امر ، كهذا مثلا Factorial.asm, 34

I am INITIALIZING (Factorial.asm, 34)

The WM_INITDIALOG message has the value (Factorial.asm, 35)

eax = 00000110 (Factorial.asm, 36)

----------------------------------------

----------------------------------------

------------------------------------ (Factorial.asm, 39)

** The value you enterd in text is** (Factorial.asm, 44)

offset szNum = 5

------------------------------------ (Factorial.asm, 46)

*****Following is the value you enterd in hex!***** (Factorial.asm, 48)

eax = 00000005 (Factorial.asm, 49)

*****And now in the same value in decimal!***** (Factorial.asm, 50)

eax = 5 (Factorial.asm, 51)

------------------------------------ (Factorial.asm, 52)

------------------------------------ (Factorial.asm, 60)

------------------------------------ (Factorial.asm, 61)

What value did we get by calculating using Factorial recursion method ?? (Factorial.asm, 63)

offset szFacRec = 120

------------------------------------ (Factorial.asm, 65)

What about iteration method ?? (Factorial.asm, 66)

offset szFacItr = 120

------------------------------------ (Factorial.asm, 70)

هناك ملاحظة...في الجملة الاولى يخبرني البرنامج ان القيمة التي ادخلتها هي قيمة نصية(اعتقد انه يقصد ASCII)

لكن اليس المفروض انها قيمة عددية decimal ؟

شخصيا لا اعرف كيف يمكن الاستفادة منه...ربما فقط في عملية ال tracing للبرنامج وذلك لفهم اليه عمله...

دعونا ناتي للاسئلة...

"من القائمة التى تكون على اليسار اختر Factorial.inc "

عن اي قائمة تتحدث؟ لم اجد اية قوائم بهذا الاسم...

انظر الى صورة الابرنامج...

#10

Factorial.asm, 34

تعنى ان السطر الذى تم إظهاره هو نتيجة لتنفيذ الامر فى السطر رقم 34 فى ملف Factorial.asm ...

اذهب إلى السطر 34 فى ملف Factorial.asm لتعرف سبب ظهور هذا السطر...

الهدف من الاداة VKDEBUG هو الاظلاع على محتوى المتغيرات بجميع الاشكال مثل ASCII او decemal الخ حتى تتمكن من تحديد الخطاء فى برامجك...

القائمة التى على اليسار اقصد بها عندما تفتح المشروع من خلال برنامج RadASM وليس عند تشغيل البرنامج...

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

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

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

#11

اخي Islam -- قرصنة البرامج تحتاج الى فهم تعليمات لغة التجميع بشكل دقيق مو كيف ما كان! انا لم اقل انك تحتاج الى معرفة كيف تعمل الـ keyboard عشان تقرصن البرنامج الفلاني.. لكن هل تعلم انه تم كتابة حمايات تعتمد على الكيبورد ونقر بعض الازرار اثناء عملية الاستنهاض!!! سلامة فهمك انا كلامي مبني على اسس مش على تخيلات واوهام.

بعدين شو دخل هالموضوع بقرصنة البرامج -- ولا مافي شي غيرها بيستاهل الواحد يتعلم الاسمبلي عشانه؟ <_<

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#12

عذرا نسيت اضافة الصورة

RadASM.GIF

بالمناسبة لماذا لا استطيع تحرير مشاركتي السابقة؟

وبالنسبة للنافذة التي عاليسار فكما ترى بالصورة لا توجد نوافذ...انا اعرف انك تقصد البرنامج RadASM وليس المضروب...

#13

استخدم file->open project حتى تستطيع الحصول على جميع ملفات المشروع...

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

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

#14

يا ريتك قلت هيك من الاول... :D عالعموم جربتها وكلو تمام...بس لسى الفائدة منو مش واضحة تماما بالنسبة الي...يمكن لاني لسى مبتدئ...

#15

بخصوص التحرير ربما يكون هناك وقت محدد يمنع بعده تعديل المشاركة -- لا استطيع الجزم لاني استطيع التحرير متى اردت :P

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

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

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