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

سؤال بخصوص لغة التجميع 16 Bit

بدأه alasadi في 25 ديسمبر 2012 · 6 رد · 1,463 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

بخصوص لغة التجميع 16 بت

هل هي اقوى من 32 بت بالنسبة لبرمجة انظمة التشغيل

هل يمكنني عمل واجهات مستخدم عن طريقها

بمعنى اخر يمكن ان اتعامل مع مكتبات API عن طريقها ام يقتصر التعامل مع هذه المكتبات فقط في 32 بت

كما لدي طلب بعد سوال ثاني:

انا لدي نظام تشغيل ويندوز 7 64 بت لقد حاولت ان احمل masm لترجمة اسمبلي 16 بت

ولم يعمل معي هل يوجد مترجم لنظام 16 بت على نظام تشغيل 64 بت

ارجو الرد مع تحياتي لكم

#2

باختصار:

فكر بداية بالفرق الجوهري مثلاً بين 16 و 32 بت.. لديك ضعف سعة استيعاب الـ registers في 32 بت (تستطيع أن تنسخ قيمة من 4 محارف مباشرة، بينما لا تستطيع إلا نسخ 2 في 16 بت)

لديك أيضاً مجال أوسع من الـ opcodes

لديك اختلاف جذري في أسلوب التعامل مع الذاكرة وأوضاع التشغيل

عندما تقول:

اقتباس
هل هي اقوى من 32 بت بالنسبة لبرمجة انظمة التشغيل

إن كنت تقصد برمجة نظام تشغيل بالضبط، فهذه تقريباً مهمة شاقة جداً وتتطلب جهد هائل وخبرة كبيرة جداً بالإضافة إلى فريق عمل كبير

خصوصاً عندما تفكر بجعل نظام التشغيل للاستخدام العام من عامة المستخدمين وليس كمشروع شخصي لاكتساب الخبرة فقط

اللغات الأخرى مثل ++C أقرب لتحقيق ذلك من الأسمبلي، ويمكن الاعتماد على الأسمبلي في أجزاء تتطلب سرعة أكبر أو وصول أعمق للتخاطب مع الـ hardware.

أما لو كنت تقصد كتابة برامج لتعمل على أنظمة التشغيل

فالـ 32 بت بالطبع هو ما تحتاجه.. زمن 16 بت انتهى مع الـ DOS

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

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

اقتباس
بمعنى اخر يمكن ان اتعامل مع مكتبات API عن طريقها ام يقتصر التعامل مع هذه المكتبات فقط في 32 بت

تحتاج 32 بت

الـ 16 بت تتعامل مع مقاطعات interrupts وهي ما يشبه الـ API لكن بالطبع لا مجال للمقارنة.

بالنسبة لـ masm 16 على أنظمة 64 بت فلن يعمل. تطبيقات 16 بت بشكل عام على أنظمة 64 بت لم تعد مدعومة وأصبحت deprecated.

إن كنت تريد استخدام masm 16 فستحتاج لنظام تشغيل 32 بت حصراً حتى يستطيع تشغيله.

2

Do as I say, not as I do

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

#3

زيادة على ماقاله الأستاذ Xacker، إذا كنت لاتجيد الـC فتعلمها لأنك لن تتقدم دون معرفتها. أيضاً كتابة تطبيق بالأسمبلي عملية غير مجدية. صعوبة ومجهود كبير وسرعة التفيذ تقريباً واحدة لو إستخدمت C.

أيضاً غالبا لن تحتاج للأسمبلي. لكن أحيانا (عندما تتقدم) قد تحتاج لتعلمتين أو ثلاث وكل المصرفات توفر توجيه لإدارج تعليمات أسمبلي في البرنامج. لذا لاتجعلها أولويتك.

1
#4

انت تتكلم عن 16 بت فى حين توجد العديد من الأبحاث لتطوير معالج 128 بت حاليا فى انتل و AMD :thinking:

اقتباس
إن كنت تريد استخدام masm 16 فستحتاج لنظام تشغيل 32 بت حصراً حتى يستطيع تشغيله.

أو نظام تشغيل 32 بت يعمل من داخل Virtual Machine على نظام 64 بت

تم تعديل هذه المشاركة بواسطة C++er في 26 ديسمبر 2012 في 05:39

1

مدونتي: C++ Tips and Tricks

#5

اولاً شكراً لكم على اجابتاتكم الوافية

لكن هل معنى كلامكم ان تعلم لغة التجميع شيئ لم ينفع

كما اني قرأت عنها انها تبقى هي اللغة الاقوى بين لغات البرمجة بغض النظر عن صعوبتها

عندما سالت عن قوتها بالنسبة لنظام التشغيل انا لن اريد ان اعمل نظام تشغيل ولكن كان للاطلاع لا اكثر

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

كذلك هل يمكنيي عن طريق لغة التجميع او اي لغة من لغات المستوى العالي ان اقوم بالتحكم بالقطعات بشكل كامل

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

ام استطيع عمله بلغة C++ اذا اكان الامر يمكن اصلاً.

وبخصوص C++ هل يمكنني تعلمها ابتداءاً من C++/CLI ام يجب ان ابدأ بلغة C++6

اسف على كثرة الاسئلة مع جزيل شكري واحترامي

#6
اقتباس
لكن هل معنى كلامكم ان تعلم لغة التجميع شيئ لم ينفع

على العكس تعلم لغة التجميع يجعلك تدرك كيف يعمل الحاسب بشكل مفصل جدا.

اقتباس
كما اني قرأت عنها انها تبقى هي اللغة الاقوى بين لغات البرمجة بغض النظر عن صعوبتها

اللغه ليست صعبة و هي ابسط من اى لغة اخرى و قوتها لا تكمن فى صنع البرامج و لكن تكمن فى انها تستطيع التعامل مع الـ hardware مباشرة و هذا ما لا تستطيع اى لغة اخرى ان تفعله.

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

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

اقتباس
كذلك هل يمكنيي عن طريق لغة التجميع او اي لغة من لغات المستوى العالي ان اقوم بالتحكم بالقطعات بشكل كامل

سأفترض انك تقصد الـ hardware interrupt عندما قلت المقاطعات.

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

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

يمكنك ذلك من خلال لغة Script غن اردت و عملية التغيير نفسها تختلف من نظام تشغيل لأخر، و داخل ويندوز لدى كلمة واحد Registry.

اقتباس
وبخصوص C++ هل يمكنني تعلمها ابتداءاً من C++/CLI ام يجب ان ابدأ بلغة C++6

لغة C++/CLI موجهة لبيئة الـ Common Language Infrastructure و هي تعتبر امتداد للغة الـ ++C و الافضل لك - بناءا على مستواك الحالي - ان تبتعد عنها تماما.

لا توجد لغة اسمها C++6 و لكن يوجد برنامج اسمه Visual C++ 6 من انتاج ميكروسوفت و هو يتيح لك كتابة برامج بلغة الـ ++C و يحتوى هذا الإصدار على اسوء مترجم للغة ++C فى تاريخها، لذا إن اردت تطبيق برامجك و امثلتك ارشح لك برنامج Visual C++ 2008.

لمزيد من المعلومات عن لغة ++C إقراء هذا الموضوع.

و الله ولي التوفيق

مدونتي: C++ Tips and Tricks

#7

شكراً لك اخي العزيز والله ما قررت

تحياتي لكم جميعاً...

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