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

ترجمة برامج من C إلى اسمبلى

مغلق
بدأه احمد غريب في 13 أكتوبر 2004 · 33 رد · 7,558 مشاهدة · في المواضيع المميزة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لا شك إن كتاب Programming Windows هو افضل كتاب لفهم ادوات ال API. كتاب قديم لكنه ما زال اكثر كتب برمجه الوندوز شهرةً.

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

الكتاب تجده هنا وقد بدات بالمثال الموجود فى الفصل الرابع الجزء الثانى بعنوان An Introduction to GDI, سئواصل إن شاء الله بترجمت الامثله الموجوده فى الكتاب خطوه بخطوه كلما سمح لى الوقت.

ادرج الان المثال الاول, ولو كان هناك اى شخص يحب المشاركه فى الترجمه او لدى اى شخص إقتراح او سؤال نستطيع نقاشه هنا.

والسلام

Screen.zip

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

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

#2

يا سلام عليك .. أخي أحمد

فكرة رائعة

فعلا لغة الإسمبلي + السي = فهم مايقوم بة الكمبيوتر والنظام = خبير

وأتمنى المشاركة في الترجمة .. ولكن لغتي الإنجليزية ضعيفة جدا

هذا السبب لا يعني أني سأقف أتفرج ..

سؤشارك بكل الطرق الممكنة بإذن الله ... أهم شيء إصال المعلومة لي ولكل الأعضاء

وبالتوفيق

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#3

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

#4

السلام عليكم

شاكر لكم على المرور, حياك الله اخى Dot-Net وإن شاء الله ساحاول ترجمة بعض الكود من Dot Net, HLA و اى لغه اخرى مثل VB ايضاً, الفرق ليس كبير فى الغالب برمجه وندوز لا تختلف كثيراً من لغه لاخرى.

الاخ jaas حياك الله الموضوع بسيط جداً ولا يحتاج سوى فهم الامثله الموجوده فى الكتاب, وانت خبير فى اللغتين C واسمبلى لذالك يمكنت ترجمة الامثله بدون الحاجه لقرائة الشرح.

وانصحك بتعلم اللغه الانجليزيه لان المراجع المتوفره بهذه الغه لا حصر لها.

البرنامج المرفق كتبته على عجاله ولم اقم بتنسيق الكود وإجاد حلول افضل لذالك ارحب باى تعليق او تعديل عليه.

ورمضان كريم

والسلام

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

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

#5

السلام عليكم,

الأخ أحمد هذه فكرة جميلة وهي قد تبين لنا مدى تشابه اللغتين في كتابة البرامج .

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

الأخ أحمد أنا معاك على الخط ويمكن أن نناقش أي موضوع. الآن أنا في تحميل الكتاب وبعد الإطلاع عليه نفتح باب النقاش.

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

إلى اللقاء.

#6

ما شاء الله عليك يا احمد فكرة رائعة، سجل اسمي متابع، و ساقوم بتنزيل الكتاب باقرب فرصة ان شاء الله. هل هي بمناسبة شهر رمضان؟؟ كل عام و انتم بخير.

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#7

السلام عليكم

اخى chik يمكننا ان نطور المسئله لاحقاً للمترجمة برامج DotNet إلى اسمبلى, كما لا يخفى عليك الاختلاف ليس كبيراً فى البرمجه لنظام الوندوز, وبهذه الطريقه نتطور نحن كمبرمجين ويستفيد يرى مبرمجى السى والسى++ ان الفرق هو فقط فى بعض الاشياء الصغيره, وفى نفس الوقت نوضح مراكز القوه للغة الاسمبلى.

الاخ عماد هذا شهر الخير وكل الخير ياتى معه, حياك الله متابع ومشارك إن شاء الله. رمضان كريم عليكم جميعاً.

والسلام

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

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

#8

السلام عليكم

مازلنا نواصل ترجمة البرامج من نفس الكتاب, قمت باضافة scroll bar للبرنامج ولكن لسؤ الحظ واجهتنى مشكله وانشغلت بمشروع فى العمل حال بينى وبين ايجاد الوقت لحل المشكله.

البرنامج يبداء ثم يحدث خلل بعد الانتهاء من عمل ال scroll bar الاعلى, واظن ان الخلل فى ال scroll bar الاسفل.

إذا كان احد من الاخوه لديه الوقت والعزيمه فياليت يحاول إيجاد الخلل وإصلاحه حتى تعم الفائده ولكم منى جزيل الشكر.

البرنامج مرفق اسفل المشاركه.

والسلام

Screen2.zip

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

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

#9

السلام عليكم,

الأخ أحمد تشكر على هذه المجهودات.

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

إلى اللقاء.

#10

السلام عليكم,

سأعطي هنا ترجمة الفقرة الخامسة وبرنامج SinWav وهو يقوم برسم لدالة من نوع sin .

وقد حاولت أن أعطي للترجمة نفس الشكل كما في أصلها وقد قمت بتغيير بسيط وهو استعمال الدوال الممدودة ل RegisterClass و CreateWindow لأن هذه الأخيرة غير معلنة في MASM وتغييرها ب CreateWindowEX ولكن التغيير ليس كبير لأن الفرق بينهما طفيف جده علما أن هذه النسخة من الدالة هي أحدث.

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

إلى اللقاء.

SinWav.zip

#11

السلام عليكم

فعلاً عمل رائع منك اخى chik وايضاً إستخدامك لمكتبات FPU يسهل الامر كثيراً للمبتدئين, رغم انى لا احب هاذه المكتبات ولكن عندما تعلمت ال FPU كان بواسطتها.

لك جزيل الشكر على المجهود وارجو ان يشارك الجميع فى الترجمه.

والسلام

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

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

#12

السلام عليكم,

يمكن أن نفتح موضوع خاص بكل ما يتعلق ب FPU إذا كان من يهمه الأمر بهذا الشأن.

وسأحاول ترجمة فقرات أخرى إن شاء الله.

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

لإلى اللقاء.

Disk_Book.zip

#13

اشكرك اخى chik على هذا الملف الاكثر من رائع, انا بالفعل كنت ابحث عنه ولكن لم يحالفنى الحظ على العثور عليه فى الانترنت.

والسلام

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

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

#14

السلام عليكم,

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

mov eax,sinfo.nPos
  mov iHorzPos,eax
  mov eax,ps.rcPaint.top
  mov ebx,cyChar
  div ebx

فقمت بعمل ديبوغر للبرنامج وهنا يكمن الخطء كما هنام عدة نقاط فيها عملية القسمة div ebx يتم فيها الخلل. وهذا راجع أنك نسيت أن تعطي القيمة للرجستر edx . فبما أنك تقسم على ebx من 32 بت فالمقسوم يكون في edx:eax وبما أنك تريد هنا قسم ما في eax فقط فقد قمت بإعطاء 0 للرجستر edx قبل عملية القسمة وشغل البرنامج لكن لم يظهر ما كان يجب أن يظهره وأظن أن هناك مشكلا في إعطاء القيمة الصحيحة لمتغير ما. وبما أن هناك متغيرات كثيرة فقد يتلف المرء في العثور على المتغير الصحيح.

على العموم لو نضيف xor edx,edx قبل كل عملية div ebx وهناك حوالي 3 أو 4 قسمة سيشتغل البرنامج بدون أخطاء تنفيذية ويبقى العثور على الخطء الآخر.

إلى اللقاء.

#15

السلام عليكم

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

اما بالنسبه لترجمت الكتاب فياليت نكمل الترجمه لانها فعلاً وسيله ممتاذه لفهم البرمجه بالغتين فى ان واحد.

والسلام

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

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

#16

السلام عليكم,

كنت أود أن تكون هناك مشاركة عدد أكبر من الأعضاء حتى نتبادل الآراء وتكثر المناقشة وأتمنى أن يتم ذلك قريبا.

وعلى كل حال سنحاول إتمام المشروع .

إلى اللقاء.

#17

السلام عليكم

لاعليك اخى chik هناك الكثيرون من المتابعين للموضوع, وكل من لديه إمكانية المشاركه سيشارك إن شاء الله.

واهمية المشروع هو فى كون وجود كتاب يمكن للمبتدئ الرجوع إليه إذا استعصى عليه فهم جزء من الكود المرفق.

انا حالياً كما ذكرت مشغول قليلاً بمشروع, وإن شاء الله بعد اسبوع اتفرغ للمشاركه فى الترجمه.

والسلام

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

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

#18

السلام عليكم,

أعانك الله أخي أحمد.

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

إلى اللقاء.

#19

السلام عليكم,

سأعطي هنا ترجمة لبرنامج آخر وهو يعطينا ساعة ديجيتال وهو في الفقرة الثامنة والمرة القادمة سأقوم إن شاء الله بترجمة برنامج الساعة الأنلوجية.

وهنا أريد أن أعطي طريقة للذين يريدون أن يترجمو برنامجا ما وقد استعملتها وسهلت الأمور شيئا ما وهي :

بما أنه عندنا البرنامج شغال بلغة س فحين نريد برمجته إلى الأسمبلر نقوم بترجمة كل بروسدور وحدها وبعد هذا نزرع كل بروسدور في برنامج س وهذا سنتيقن أنه إذا كان هناك خطء ما سيكون في هذه البروسدور وبعد هذا نترجم البروسدور الأخرى إلى آخره. وهذا قد يسهل كثيرا العثور على الأخطاء لأننا سنركز على بروسدور واحدة بينما لو نكتب البرنامج كاملا يلزمنا وقت كبير للعثور على خطء ما. كل ما نغيره حين نزرع برنامجنا في س هي تغيير invoke باستدعاء الدالة باستعمال push وقد نحصل على عنوان الدالة بلغة س إذا أردنا قبل أن نستدعيها وكذلك تغيير الأوامر مثل if . وغيرها.

إلى ترجمة مقبلة أقول إلى اللقاء.

Chapter8_DigitalCLock.zip

#20

السلام عليكم

رائع اخى chik فعلاً طريقه ممتاذه للترجمه, لابد ان احمل c كمبايلر كى اجرب هذه الطريقه, هناك ايضاً طريقه إصدار كود الاسمبلى من c ولكن هذه الطريقه تفسد الهدف الذى نريد ان نصل إليه, الا وهو تعلم الغتين.

ولتعلم اى لغة برمجه لابد لنا ان نبذل مجهود.

والسلام

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

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

#21

السلام عليكم,

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

c:\masm32\bin\ml /c /coff /Zi /Cp MyProg.asm

c:\masm32\bin\Link /SUBSYSTEM:WINDOWS /DEBUG /DEBUGTYPE:CV MyProg.obj

بعد هذا ما علينا سوى تحميل البرنامج ب Symbol Lodaer وسيكون عندنا الكود مكتوب وقد يسهل عملية الديبوغر وهنا نفرض أنه عندنا دالة ما باسم MyFunc ومتغير باسم MyVar فيمكن أن نضع نقطة توقف بالأسماء مثلا bpx MyFunc هذا سيمكننا من التوقف عند الدالة المذكورة أو نعمل bpm MyVar وهذا سيمكننا من الوقوف عند كل محاولة الإتصال بالمتغير ويمكن أن نختار مثلا الكتابة أو القراءة أو الإثنين.

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

إلى اللقاء.

#22

السلام عليكم,

كما قلت من قبل سأعطي هنا الترجمة لبرنامج يعطينا الساعة بظهور ساعة أنلوجية هذه المرة.

البرنامج دائما في الفقرة 8 .

إلى اللقاء.

AnalogClock.zip

#23

السلام عليكم

بالفعل مبدع اخى chik إن شاء الله بعد 10 ايام اشارك معك فى الترجمه, إلى ذالك الحين اتمنى لك التوفيق.

والسلام

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

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

#24

السلام عليكم,

هذه ترجمة لبرنامج يعمل Bit mask على صورة وهو في الفقرة 14 .

فيما يخص الرسورس كما قلت مسبقا أنا اسجلها على شكل ملف res . حتى نسهل الشغل على الكمبايلر.

إلى اللقاء.

BitMask.zip

#25

السلام عليكم

مره اخرى يتحفنا المبدع chik بإبداعاته, ما شاء الله عليك اخى chik والله رائع, وانا مازلت على وعدى إن شاء الله, المهم إدعيلى يخلص مشروعى وانا معك بكل ما املك من الوقت.

والسلام

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

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

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…