من طرف cs_senior السبت 22 مايو 2010 - 16:49
بص يا سيدى
انتا عارف ان address bus كانت بتشيل 16 بت لما تجي تحسبها 2اس 16 هتلاقى انها كانت تقدر توصل
لميمورى بحجم 64 كيلو بسسسس فى حين ان معالجات 8086 كانت المفروض توصل ل 1 ميجا
ازاى بقى يحلو الموضوع ده فعملو البروتكتيد مود والسيجمنتس
الفكره كانت انهم يقسمو الميمورى لسيجمنتس وبيعملو للبرامج align عل بدايه السيجمنت الخاصه بيه
فبدل ما كان الادرس باص مهمته يوصل لبايت بايت فى الميمورى بقت مهمته يوصل لبدايه سيجمنت سجمنت
كل سجمنت مساحته 64 كيلو
يعنى مثلا اول ادرس
يبقى كده 0 ده يقف عل بدايه اول سجمنت
تانى واحد 65 ده يقف عل تانى سجمنت
بدايه السجمنت ديه تعرفها ازاى ؟؟
قالك ديه اى مكان فى الميمورى بيقبل القسمه عل 16 dec او 10 hex
كده نبقى عرفنا ان بدايه السجيمنت لازما وحتما يكون فى بدايه الادرس بتاعها 0 و يعنى مثلا 12390,23450,67770
عندك ال 1 ميجا بتساوى 2 اس 20 يبقى انتا كده محتاج 5 بت عشان توصل الميمورى كلها وعندك الباس فيها 4 بت وانتا عارف ان لازم الادرس يكون فيها صفر
فتضرب فى 10 عشان الصفر يتحط ويبقى الادرس مكون من 5 بت
ليه بقى بنجمعهم عل الباس رجيتسر
عشان انتا لما جيبت الادرس بتاع السجيمنت جيبت بدايته لكن انتا عاوز تجيب داتا معنيه جواه
فتجمع الاوفست بتاع الداتا ديه
بسسسسس كده