كنت قد بدأت القرآءة في كتاب IBM PC Assembly Programming and Language
وتوقفت عند شرح ال Adresses and segment in memory
يا ريت أي حد يشرح هه النقطة
كنت قد بدأت القرآءة في كتاب IBM PC Assembly Programming and Language
وتوقفت عند شرح ال Adresses and segment in memory
يا ريت أي حد يشرح هه النقطة
بما انى لا اعرف الكثير عن الاسمبلى,
ساقول لك الاتى.
عندما وصلت ذاكرةالكومبيتر الى 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 هل لاحظت ذلك
هذين العنوانين هما نفس المكان فى الذاكرة, لذلك عليك الانتباه
ارجو ان اكون قد افدت
كلام سليم
هذا الموضوع مغلق.