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

الفرق بين اسمبلى 16 واسمبلى 32

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

السلام عليكم

لاحظت ان اكبر مشكلة تواجه المبتدئين هى معرفة الفرق بين الاسمبلى 16 والاسمبلى 32, واكثر خطاء شائع هو ان المبتدء يقوم بتحميل مترجم 32 بت مثل masm32 ويحاول تطبيق برنامج بإستخدام المقاطعات, فى اغلب الاحيان يقوم المترجم بترجمة البرنامج بدون اخطاء ولكن عند التنفيذ تظهر اخطاء غريبة ولا يستطيع المبتدء فهم السبب...

اولاً علينا ان نتعلم كيف نتعرف على البرنامج إن كان من نوع 16 او من نوع 32 بت..

برامج الـ16 بت تحتوى على مقاطعات وهى التى تبداء بالكلمة int, كذلك بعض البرامج تحتوى على الدالة in و الدالة out للتعامل معى منافذ الجهاز بشكل مباشر, هذه التعليمات تسمى Privileged instructions ولا يسمح نظام الوندوز 32 بت بإستخدامها مباشرتاً من خلال برامج الـ32 بت..

إذا اردت كتابة برنامج 16 بت تحت نظام الوندز 32 يجب عليك إستخدام كمبايلر اخر مثل masm وليس masm32, او بالاحرى برنامج masm الاصدار الخامس على اقصى حد..

طبعاً البرنامج يعمل تحت نظام الوندوز 32 بإستخدام emulator ولكن لن تشعر بالفرق لان النظام لا يخبرك بانه يشغل البرنامج من خلال emulator...

برامج الـ32 تستخدم دوال الـAPI بدل من int او in و out, وهذه البرامج تلاحظ انها تستخدم المسجلات الموسعة امثال eax و ebx الخ...

خلاصة الكلام إذا كان برنامجك يحتوى على كلمة مثل int 21 هذا يعنى ان برنامج هو من نوع 16 ولن يعمل إذا استخدمت masm32,,,,

ارجو ان يكون الشرح واضح ...

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

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

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

#2

1- انت ذكرت ان asm32 هو لنظام 32 بيت و asm16 هو لنظام 16 بيت هل يعني ذلك ان asm32 لهو اوامر أكثر ويعمل

علي ريجسيترات سعتها 32 بيت ؟؟؟

2- اذا كان كما تتدعي ان asm32 سوف يعمل debug لبرنامج بسيط به أوامر asm16 فهل يعني انه لن ينفذ بشكل صحيح؟؟

3- نظام الدوس يعمل أو يرى النمط الحقيقي فقط real mode اذن ويندوز يرى النمطين معا real and protected mode ولكن هل يرى

الوندوز النمطين كنمط واحد علي اساس انه protected mode ام يرى كل على حدى ؟؟؟ لماذا كان هذا الانتقال والتحول والفصل في وجود هذين النمطين اليس من الاجدر

وجود نمط واحد ؟؟

4- علي ما أعتقد كان بسبب زيادة حجم الذاكرة وطريقة عنونتها والخروج من نطاق عنونة 16 بيت ولكن اذكان ذلك للحفاظ علي استمرارية النظام دوس فلما لم تظهر اصدارات منه تعمل علي النمط المحمي مع الحفاظ على شكله المعروف؟؟؟ طالما ان البروسيسور تطور بسرعة من وضع الي وضع وتكيف مع التطبيقات الصاعدة؟؟

5- لا زال عندي قصور في فهم النمط الحقيقي والمحمي لم استطتع تخيل فكرتهما بعد فهل من شرح مختصر أو حتي موقع يعطي شرح مبسط حتي اتخيل الموضوع بالضبط

#3

1. معالجات الـ32 بت لها اوامر اكثر من المعالجات القديمة كما ان المسجلات فيها تحتوى على 32 بت وليس فقط 16, نظام الـ16 يمكن تشغيله على معالج 32 ولكن العكس ليس صحيح حيث انك لا تستطيع تحميل نظام وندوز NT على جهاز 286.

2. انا لم اتحدث عن الDebug مطلقاً فى هذا الموضوع..

3. نظام الدوس يرى النمط الحقيقى فقط لانه لا يوجد نمط محمي تحت الانظمة التى تعمل فى نظام الـ16 بت, نظام الـ32 بت لا يرى النمط الحقيقى لانه يعمل تحت نمط محمي يمنعة من الوصول إلى النمط الحقيقي ..

4. النمط المحمي يختلف عن النمط الحقيقي فى عملية الصلاحيات, كون وجود النمط الحقيقي على اجهزة الـ16 بت والنمط المحمي تحت اجهزة الـ32 بت ما هى إلا مجرد مصادفة, والدليل على ذلك لو قمت بتنصيب نظام الدوس القديم على جهاز Pentium جديد فإنه يعمل تحت النظام الحقيقي وليس المحمى.. إنتقال النظام من النمط الحقيقي إلى المحمى هى خاصية متوفرة فى المعالجات الجديدة فقط, وتستخدمها انظمة التشغيل امثال وندوز حتى تحمى الاجهزه من الفايروسات والاختراق والعبث بمكونات الجهاز عن طريق البرامج..

5. هناك الكثير من المواقع التى تتحدث عن هذه الامور ولكنها مواضيع متقدمة جداً, ابحث فى جوجل عن protected mode vs real mode وستجد الكثير من المواضيع ...

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

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

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

#4
احمد غريب كتب:
4. النمط المحمي يختلف عن النمط الحقيقي فى عملية الصلاحيات, كون وجود النمط الحقيقي على اجهزة الـ16 بت والنمط المحمي تحت اجهزة الـ32 بت ما هى إلا مجرد مصادفة, والدليل على ذلك لو قمت بتنصيب نظام الدوس القديم على جهاز Pentium جديد فإنه يعمل تحت النظام الحقيقي وليس المحمى.. إنتقال النظام من النمط الحقيقي إلى المحمى هى خاصية متوفرة فى المعالجات الجديدة فقط, وتستخدمها انظمة التشغيل امثال وندوز حتى تحمى الاجهزه من الفايروسات والاختراق والعبث بمكونات الجهاز عن طريق البرامج..

كيف يوفر هذا النمط حمياة من الاختراقات ؟؟ هل يتم الاختراق عن طريق الدوس أم الاختراق عن طريق فهم الشفرة المصدرية ام ماذا ؟؟ وهل النمط الحقيقي يمكن اختراقة بسهولة وكيف هل عن انت تقصد عن طريق أمر ال debug الموجود بالدوس ومعرفة بعض الاشياء عن الجهاز هذا ما تقصده؟؟؟

#5
فارس2005 كتب:
كيف يوفر هذا النمط حمياة من الاختراقات ؟؟ هل يتم الاختراق عن طريق الدوس أم الاختراق عن طريق فهم الشفرة المصدرية ام ماذا ؟؟ وهل النمط الحقيقي يمكن اختراقة بسهولة وكيف هل عن انت تقصد عن طريق أمر ال debug الموجود بالدوس ومعرفة بعض الاشياء عن الجهاز هذا ما تقصده؟؟؟

النمط الحقيقي تعمل به البرامج وتستطيع التحكم به (Ring3) اما في النمط المحمي (Ring0) فلا تستطيع البرامج الوصول اليه الا عبر استثناءات معينة او خدمات VxD وهوما يعمل عليه النظام وبالتالي بما ان الفيروسات هي برامج فانها لا تستطيع الانتقال الى النمط المحمي بالسهولة المتصورة واي برنامج يحاول الانتقال اليه اما ان يتم ايقافه من قبل الـ AV او النظام حسب اعدادات الامان المتبعة... الاخ احمد يستطيع التوضيح بصورة تقنية افضل

Do as I say, not as I do

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

#6

انا فكرت الموضوع بسيط طلع الموضوع يحتاج الي دراسة

طيب ما هي الحلقات ؟؟؟ في النظام الحقيقي محدد كل منطقة مخصصة لشئ معين في نطاق ال 1 ميجا لكن بعد زيادة الذاكرة انحسر النطاق ال 1 مجيا في النمط الحقيقي وما بعده في النمط المحمي ولكن هل مفهوم الحلقات في النظام الحقيقي موجود ؟؟؟ وما ذا تعني الحلقات هل هي تقسيم مثل ال segment ام موضوع ثاني ؟؟ وهل هناك تقسيم في ال protected mode مثل ما هو موجود في النمط الحقيقي ؟؟؟

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

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