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

[ تمت الإجابة ]أريد أن أفهم masm و الأسمبلي وكيف أعرف ما هو نظامي ؟؟

بدأه مبرمجة مسلمة في 26 مارس 2010 · 7 رد · 2,511 مشاهدة · في أرشيف قسم الـــ Assembly
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

قرأت عن لغة الأسمبلي فأحببت أن ألقي عليها نظرة ولكنني عندما دخلت زادت حيرتي واختلط علي الأمر

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

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

لأنه عندما أنشأ لي ملف ال exe مع اللعم أنه لم ينتج معه ملف آخر بامتدا obg عندما شغلت ملف ال exe أعطاني رسالة يقول فيها c:\masm\test.exe is not a valid win32 applcation

ما المقصود بذلك ؟ وما المقصود بأنظمة 16 و 32 و64 بت

أوهل تعمل هذه اللغة على أي نظام تشغيل مثل وندوز ولينوكس وغيرها .. وشكرا لكم مقدما

#2

عليكم السلام

اولا يجب ان تعرفي امرا مهما ، لغة الاسمبلي عبارة عن تعليمات instruction ، وهده التعليمات هي نفسها المستعملة من قبل المعالج

فادا اختلف نوع المعالج اختلفت هده التعليمات بمعنى اختلاف الاسمبلي كلغة

فمتلا الاسمبلي للمعالج Intel ليست هي الاسمبلي للمعالج Mips او Motorola

من هدا تستنتجين ان لكل معالج اسمبلي خاصة به ( ان صح التعبير )

بالنسبة للمعالج AMD فله نفس تعليمات Intel يعني نفس الاسمبلي .

هدا من جهة المعالجات اما من وجهة انواع اللغة فهناك 3

الاسمبلي 16 بت : من خلالها تستطيعين عمل برامج 16 تعمل تحت بيئة الدوس ( الشاشة السوداء ) وهي تعتمد بشكل اساسي على استدعاء المقاطعات

ولترجمة برامجها تحتاجين الى احد مترجمات اسمبلي اشهرها MASM ( هناك NASM و FASM و TASM كلها تختلف من حيت الـSyntax )

الاسمبلي 32 بت : تمكنك مع عمل برامج دات واجهات رسومية وهي تعتمد بشكل كلي على دوال الـApi وللعمل بها تحتاجين الى MASM32 و IDE متل WinASM او RadASM

الاسمبلي 64 بت : نفس ما دكرنا بالنسبة للاسمبلي 32 بت لكنها تشتغل على انضمة 64 bits تحتاجين فيها الى MASM64

المقصود بانضمة 16 و 32 و 64 بت باختصار بسيط فالامر له علاقة بمسجلات المعالج

فمتلا انضمة 64 بت لن تشتغل على معالج Intel 32 bits لان اطول مسجل بهدا المعالج طوله 32 bits

اما امر اختلاف الاسمبلي بين الانضمة فنعم ، الاسمبلي للنكس ليست هي ( نسبيا ) الاسمبلي للويندوز

3
#3

شكرا لك على هذه الإجابة .. النظام الذي أعمل عليه وندوز xp وجهازي dell وهناك على جهازي صورة صغيرة لاصقة لإنتل

هل هذا يعني أن الجهاز الذي يناسبني هو masm32

وشكرا لك مرة أخرى

#4

نعم masm32 لكن في حالة كنت تريدين كتابة برامج 32 بت باستخدام دوال الـApi ( برامج دات واجهات رسومية )

اما ادا كنت تريدين كتابة برامج 16 بت تعمل تحت بيئة الدوس فعليك بـmasm16

#5

خخخ رضا ما شاء الله مميز اينما كنت

#6
اقتباس
اما امر اختلاف الاسمبلي بين الانضمة فنعم ، الاسمبلي للنكس ليست هي ( نسبيا ) الاسمبلي للويندوز

هل هذا بسبب استدعاءات النظام فقط ؟

أي أنه إذا كتبت برنامج لا يستخدم أي استدعائات للنظام سيعمل بشكل سليم على Windows و Linux ؟

تم تعديل هذه المشاركة بواسطة Speed_Of_Light في 14 أبريل 2010 في 00:23

#7
اقتباس
أي أنه إذا كتبت برنامج لا يستخدم أي استدعائات للنظام سيعمل بشكل سليم على Windows و Linux ؟

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

وفي حالة استخدامك ل NASM فان برنامجك يمكن اعادة تجميعه ليعمل في العديد من المنصات .. طبعا اذا فرضنا أنك لن تستخدم أي system call (أي لن يكون هناك لا input ولا output ، مجرد حسابات وعمليات فقط).

بالتوفيق.

#8

الف شكر معلومة مفيدة وخلاصة رائعة

:)

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

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

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

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

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