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

ال segments

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

كنت قد بدأت القرآءة في كتاب IBM PC Assembly Programming and Language

وتوقفت عند شرح ال Adresses and segment in memory

يا ريت أي حد يشرح هه النقطة

#2

بما انى لا اعرف الكثير عن الاسمبلى,

ساقول لك الاتى.

عندما وصلت ذاكرةالكومبيتر الى 1Megabyte كانت ال 16 bit لا تكفى لعنونة هذا الحجم الضخم من الذاكرة, لذلك اخترع المهندسون المفهوم الفعال, وهو ان يقسموا الذاكرة الى segments و offsets

حسنا. يمكن الان ان نقول اننا نريد البايت الاول فى السكمنت الثانى. فى هذه الحالة , و بما ان كل من مسجلات المقاطع هى ليست الا 16bit يمكن ان نصف هذا العنوان 0002:0001.

من العدد 16 يكون واضح جدا ان هناك 65536بايت فى كل سكمنت ,

و ان العدد الاقصى للقطاعات (segments) هو 2^16 = 65536

بهذه الطريقة نظريا يمكن ان نعنون حجم كبير من الذاكرة اكبر من ال 1Megabyte

65536 * 65536 == هل تدرى ما هو الرقم 4Gegabytes

لذلك قرر المهندسون ان يجعلوا العنوان الحقيقى =

السكمنت * 16 + الازاحة (offset) بهذه الطريقة اكبر مساحة يمكن ان تعنون هى 1megabyte

لكن هناك شئ مهم يجب الانتباه له, هو ان هذه الطريقة تجعل تداخل فى العناوين.

اي ان العنوانين التاليين يشيران الى نفس الموقع من الذاكرة

0000:0010 العنوان بالهكس طبعا

0001:0000 هل لاحظت ذلك

هذين العنوانين هما نفس المكان فى الذاكرة, لذلك عليك الانتباه

ارجو ان اكون قد افدت

#3

كلام سليم

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