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

أخوكم جديد في Assembly يريد إرشاداتك

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

السلام عليكم إخواني الكرام

أريد تعلم هذه اللغة لرائعة و قد قمت بحفظ كل ما قاله الأخوى الكرام JAAS ,CHIK ,... لأن مواضيعه كبيرة جدا :)

كل ما أريده هو كيف العمل على Assembly هل به مترجمات مثل c & c++ و ماهي الأفضل

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

في إنتظار ردودكم

...

#2

نعم لها Assemlber و Debugger و لكن ليس لها Editors قوية مثل Visual Studio او غيرها حيث ان كل الEditors الموجودة هي بمستوى ال Notepad

و يمكنك تحميل الTools من هنــــــــــــــــــا

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#3

أشكر أخي الكريم bashmohandes على الرد و شكر أيظا على المعلومات

و لكن هل لديك فكرة عن طريقة الربط بين Visual c++ و Assembly

#4

طبعا كل ما عليك فعله هو ان تكتب

_asm
{


}

و تكتب كل ال Assembly بين الاقواس

تم تعديل هذه المشاركة بواسطة bashmohandes في 15 أبريل 2005 في 12:57

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#5

و ماذا عن Visual c++ processor Pack

و هل ممكن أن تكتب لي مثال كامل لكي أقوم برتجمته مثلا

و شكر أخي الكريم

#6

السلام عليكم

هناك العديد من الـEditors للغة الاسمبلى وربما اشهرها هى Radasm والتى يمكنك الحصول عليها من هذا الموقع http://radasm.visualassembler.com/ وهى اداة فعلاً رائعه ويمكنك عمل برامج بنفس طريقة الفشول, ويوجد كذالك دروس tutorials فى نفس الموقع لهذه الاداة تعلمك الاسلاسيات فى كيفيه إنشاء برنامج.

بالنسبه للكومبايلر فيوجد العديد منها ولكن الاكثر إنتشاراً هى masm32 والتى يمكنك الحصول عليها من http://www.masm32.com

كما يوجد ايضاً fasm والتى يمكنك الحصول عليها من هنا http://flatassembler.net/

ويوجد العديد من الكمبايلر تجدها عن طريق الجوجل امثال goasm و Nasm الخ

بالنسبه لربط الاسمبلى فهنناك 3 طرق, يمكنك عمل lib وإستخدامها فى vc++ او يمكنك عمل obj واثناك عمليه link تربطها ببرنامجك و اخيراً يمكنك عمل dll ثم تستدعى الدوال كما تفعل معى اى dll فى السى بلس بلس.

بالنسبه لعمل lib فتوجد دروس قام بها iczlion على موقعه http://spiff.tripnet.se/~iczelion/

اما بالنسبه لل obj فهى بإستخدام export فى ملف الاسمبلى و extern فى ملف السى بلس بلس, كان لدى مثال على ذالك ولكن لا اذكر اين وضعته إذا كان الامر يهمك سابحث عنه واضعه هنا إن شاء الله.

بالنسبه لل dll فيوجد دروس قدمها الاخ chik هنا فى المنتدى ابحث عنها, كما انه يوجد درس فى مجموعه دروس iczline .

وبما انك خبير فى إستخدام api فانصحك بالاطلاع على دروس iczline وبعض الدروس الموجوده هنا فى المنتدى, وتعلم الاسمبلى لاستخدام الــ api سهل جداً ولا بتطلب الكثير من الجهد.

بالتوفيق

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

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

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

#7

و عليكم السلام أخي احمد و بارك الله فيك على المعلومات الرائعة

و لكن أخي هل ممكن أن تشرح طريق الربط مع Visual c++ لأني لم أفهم... لذا أخي أرجو أن التوضح لي أكثر أكون شاكرا لك

و أما عن المثال الذي تحدثت عنه أرجو إرفاقه إن لم يكن في ذلك إزعاجا و ألف شكر لك أخي احمد

#8

و أرجو التركيز أكثر أخي على طرقة الربط لأني أضنها الأفضل و الأسهل لي

و شكرا

#9

السلام عليكم

اخى GameDev4Arab وجدت المثال هو من ميكروسفت, الشرح للمثال موجود فى ملف الاسمبلى بالاضافه إلى كيفية عمل كمبايل.

تحتاج إلى برنامج h2inc لتحويل ملف .h إلى .inc كما تحتاج إلى كمبايلر للاسمبلى وهى masm32 او masm 6.11 فما فوق واخيراً تحتاج لكمبايلر ولنكر لسى بلس بلس.

والسلام

Compiler_MASM_CustomBuildStep_primesstep4.zip

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

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

#11

السلام عليكم

وهذا مثال اخر اسهل

والسلام

Compiler_MASM_CustomBuildStep_euclidstep2.zip

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

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

#12

السلام عليكم

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

اولاً نصب برنامج masm32 والذى تستطيع تحميله من موقع http://www.masm32.com مجاناً, بعد ذالك قم بإنشاء مجلد وضع فيه الملف euclid.asm واكتب الامر التالى فى نفس المجلد من خلال consle.

ml /c /coff euclid.asm

هذا الامر يكفى لإنشاء ملف obj ولا تحتاج لكل الاوامر الموجوده فى الملف, ولكن يكنك ان تجربها فيها جزء مخصص للـdebug.

الخطوه التاليه هى إنشاء مشروع فى برنامج vc++ وانا استخدم الاصدار 6 بعد إنشاء المشروع تضيف إلى المشروع الملف euclid.c وتضيف ايضاً الملف euclid.obj.

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

لاحظت شيئ غريب الا وهو انه عندما اقوم بعمليه لنك من vc++ يصبح حجم البرناج 90k اما عن طريق الكماند لاين يصبح حجم الملف 44k والامر الذى عليك ان تكتبه فى نافذه الــconsole هو

link /subsystem:console eulid.obj euclidste2.obj

جرب الطريقتين واخبرنا بالنتيجه.

والسلام

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

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

#13

السلام عليكم

راجع هذا الرابط:

/index.php?showtopic=59684

System Engineer

Red Hat Certified Engineer

Red Hat Certificate Number

805010381752078

#14

السلام عليكم

أولا : أشكر كل من ساهم في مساعدتي و بالخاص الأخ الكريم احمد حفظه الله

و لكن أضن أنه من أفضل التوقف هنا... أحسن

لأني أجد صعوبة في الفهم و أنا متأسف جدا

و لكن سأحوال الدخول لهذه اللغة بقوى لأني أجدها مهم جدا

و متأسف مرة أخرى

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

#15

السلام عليكم

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

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

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

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

#16

و عليكم السلام أخي الفاضل أحمد

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

و أشكر جزيل الشكر

#17

السلام عليكم

طيب بسيطه اشرح لك بالتفصيل:

1.اولاُ تاكد ان masm يعمل لديك وذالك بكتابة الامر ml فى الــ command line سيظهر لك التالى :

Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997.  All rights reserved.

usage: ML [ options ] filelist [ /link linkoptions]
Run "ML /help" or "ML /?" for more info

إذا لم يظهر معناها ان masm32 لم ينصب بالطريقه الصحيحه, فى هذه الحاله تاكد من وجود المسار c:\masm32\bin فى مسار الجهز path .

الخطوه التاليه ناخذ الملف Compiler_MASM_CustomBuildStep_euclidstep2.zip قم بفتحه بواسطه winzip ستجد فيه ملف إسمه euclid.asm:

قم بانشاء مجلد وضع هذا الملف فيه وإذهب إلى الــ command line ومن داخل الملف اكتب الامر التالى:

ml /c /coff euclid.asm

تاكد من السافات, هناك مسافه بين ml و /c ومسافه بين /c و /coff ومسافه بين coff/ و euclid.asm

انظر فى المجلد ستجد ملف جديد إسمه euclid.obj, هنا انتهيت من جزء الاسمبلى وبقى جزء السى بلس بلس.

شغل برنامج vc++ وانشاء project جديد, اضف إلى الــProject الملف euclid.c والملف euclid.obj والذى انشئناه فى الخطوه السابقه.

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

والسلام

تم تعديل هذه المشاركة بواسطة احمد غريب في 17 أبريل 2005 في 18:04

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

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

#18

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

أشكرك أخي و الحمد لله لقد نجحت الطريقة و لكن ماذا عن الطريقة التي قالها الأخ الكريم bashmohandes

_asm
{


}

و هل من كتب تنصح بها أنت في إستعمال ASM في VC++

و مشكوور أخي احمد

و السلام

#19

السلام عليكم

الطريقه التى قال عنها الباشمهندس تسمى inline assembly ولكن للاسف إمكانياتها محدوده جداً وتستخدم فقط لتسريع بعض الكود, ولكن إذا اردت الطريقه الافضل للمشاريع الكبيره فهى بإستخدام مترجم اسمبلى حقيقى بدلاً من inline assembly.

بالنسبه للكتب فهناك كتاب إٍسمه assembly Language for intel-based computers وكاتبه إٍسمه KIP R. IRVINE ولكن انا اعتمد على الانترنت بالدرجه الاكبر فى الحصول على المعلومات لان الكتب لايوجد فيها دائماً المعلومه التى تبحث عنها.

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

والسلام

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

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

#20

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

إن كان كذلك فلابد من إستعمال مترجم اسمبلى حقيقي أحسن

و مشكور أخي و حاليا لن أزيد أسألة إلا بعد الدخول في هذه اللغة جيد

و شكر مرة أخرى أخي احمد

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

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

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