الحاسوب جهاز ذكي جداً، ولكن في الحقيقة هو مثل شخص لديه عقل و ذاكرة!
العقل المفكر
المكان الذي يُحفظ فيه كل شيء
تخيل أن المعالج هو طباخ ماهر 👨🍳، والذاكرة هي المطبخ الكبير 🏠
الطباخ يحتاج يعرف:
نفس الشيء! المعالج يحتاج يعرف وين موجودة البيانات في الذاكرة!
مثل ما كل بيت في الحي له عنوان (رقم 1، رقم 2، رقم 3...)، كل مكان في الذاكرة له رقم خاص يسمى "العنوان"
كل مربع يمثل "بيت" في الذاكرة، وكل بيت له رقم خاص!
عندما يريد المعالج يقرأ أو يكتب بيانات، يقول: "أريد البيانات الموجودة في العنوان رقم 5"
فتذهب الذاكرة وتجلب له البيانات من ذلك المكان! 📦
معالج 8086 يستطيع فقط التعامل مع أرقام حجمها 16 بت
هذا يعني أنه يستطيع عنونة 65,536 مكان فقط (أي 64KB)
ما يستطيع المعالج
64KB فقط
ما نحتاجه
1MB كاملة!
العلماء فكروا في حل ذكي! بدلاً من عنوان واحد، نستخدم عنوانين اثنين:
الآن كل مكان في الذاكرة له عنوانين:
مثال: 0x1234:0x0056
🏢 Segment = رقم الحي
الحي رقم 5 في المدينة
🏠 Offset = رقم البيت
البيت رقم 23 في ذلك الحي
🎯 العنوان الكامل: "الحي 5، البيت 23"
Segment: 0x1234 (الحي في الذاكرة)
Offset: 0x0056 (رقم البيت)
العنوان الكامل: 0x1234:0x0056
العنوان الفيزيائي = (Segment × 16) + Offset
أو
Physical Address = (Segment << 4) + Offset
المعطيات:
Segment = 0x1234
Offset = 0x0056
الخطوة 1: ضرب Segment في 16 (أو Shift Left by 4)
0x1234 << 4 = 0x12340
الخطوة 2: إضافة Offset
0x12340 + 0x0056 = 0x12396
🎉 النتيجة النهائية:
العنوان الفيزيائي = 0x12396
الآن حان دورك! أدخل أي قيم Segment و Offset وشاهد كيف يتم التحويل!
1. المعالج والذاكرة: المعالج يحتاج يعرف وين يلاقي البيانات في الذاكرة
2. مشكلة الحجم: معالج 8086 محدود بـ 16-بت (64KB فقط)
3. الحل الذكي: نستخدم نظام Segment:Offset
4. التحويل: Physical Address = (Segment × 16) + Offset
ما هو العنوان الفيزيائي لـ 0x2000:0x0100؟