🖥️ أهلاً وسهلاً في رحلة تعلم الحاسوب!

🤔 هل تعرف كيف يفكر الحاسوب؟

الحاسوب جهاز ذكي جداً، ولكن في الحقيقة هو مثل شخص لديه عقل و ذاكرة!

🧠 المعالج (CPU)

العقل المفكر

↔️

🗄️ الذاكرة (Memory)

المكان الذي يُحفظ فيه كل شيء

🎯 لماذا يحتاج المعالج للذاكرة؟

تخيل أن المعالج هو طباخ ماهر 👨‍🍳، والذاكرة هي المطبخ الكبير 🏠

الطباخ يحتاج يعرف:

  • 🥕 وين موجودة الجزر؟
  • 🧄 وين موجود الثوم؟
  • 🧂 وين موجود الملح؟

نفس الشيء! المعالج يحتاج يعرف وين موجودة البيانات في الذاكرة!

🏠 ما هو العنوان في الذاكرة؟

مثل ما كل بيت في الحي له عنوان (رقم 1، رقم 2، رقم 3...)، كل مكان في الذاكرة له رقم خاص يسمى "العنوان"

🏘️ مثال بسيط: حي الذاكرة

العنوان 0
العنوان 1
العنوان 2
العنوان 3

كل مربع يمثل "بيت" في الذاكرة، وكل بيت له رقم خاص!

💡 فكرة مهمة:

عندما يريد المعالج يقرأ أو يكتب بيانات، يقول: "أريد البيانات الموجودة في العنوان رقم 5"

فتذهب الذاكرة وتجلب له البيانات من ذلك المكان! 📦

😱 المشكلة الكبيرة!

🤔 ما هي المشكلة؟

معالج 8086 يستطيع فقط التعامل مع أرقام حجمها 16 بت

هذا يعني أنه يستطيع عنونة 65,536 مكان فقط (أي 64KB)

📏 مقارنة الأحجام:

ما يستطيع المعالج
64KB فقط

😔

ما نحتاجه
1MB كاملة!

💡 الحل الذكي: التقسيم (Segmentation)

العلماء فكروا في حل ذكي! بدلاً من عنوان واحد، نستخدم عنوانين اثنين:

  • 🏢 Segment (المقطع): أي "حي" في الذاكرة
  • 🏠 Offset (الإزاحة): رقم البيت داخل الحي

🔧 كيف يعمل النظام الجديد؟

📍 نظام العنوانين:

الآن كل مكان في الذاكرة له عنوانين:

Segment : Offset

مثال: 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

🏆 أصبحت الآن خبيراً في:

  • ✅ فهم كيفية عمل ذاكرة الحاسوب
  • ✅ معرفة مشكلة معالج 8086
  • ✅ فهم نظام Segmentation
  • ✅ حساب العنوان الفيزيائي

🎯 اختبار سريع:

ما هو العنوان الفيزيائي لـ 0x2000:0x0100؟