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

[ تمت الإجابة ]ما هو دور Segment Registers

بدأه §0L0 في 4 يناير 2009 · 5 رد · 3,498 مشاهدة · في أرشيف قسم الـــ Assembly
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــه

انا وصلت في كتاب

َart of assembly

لهده المسجلات ولم أفهم ما هو دورها المرجو شرح ويكون الشرح عربيا من فضلكم

شكرا

#2

راجع هذا:

/index.php?showtopic=74968

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#3

:S أخي هذا الكتاب ليس فيه شرح وافي جدا عن هذه المسجلات

أظن في اعضاء درسوا هذه اللغة في الجامعة و أطلب منكم إفادتي . إن الله لا يحب كاتمي العلم

#4

بما أنك مبتديء أنصحك بقراءة هذا الجزء من كتاب Assembly Language Step By Step

أتذكر أني قرأته من زمن و كان يشرح الSegment-Offset Addressing ببساطة

لو بحثت قليلا ستجده في المنتدى أو على موقع http://www.gigapedia.org

الكتاب يشرح برمجة ال8086/8088 طبعا في الReal Mode

لكن الأمر يختلف في الProtected Mode بداية من 80286

على أية حال فببساطة الSegment-Offset Addressing هي تقنية لعنونة الذاكرة تم إستخدامها في ال8086

حيث كان حجم الregister يساوي 16 بيت مما يسمح بوضع عنوان من 0000H حتى FFFFH بما يعادل 2 ^ 16 = 64 كيلو بايت من الذاكرة

لجعل المبرمج قادر على الوصول إلى 1 ميجابايت من الذاكرة (حيث كان يوجد للبروسيسور 20 طرف للAddress)

يتم إستخدام مسجلين بدلا من واحد فقط

أحدهم يسمى الSegment Register حيث تم تقسيم الذاكرة ال1 ميجا بايت إلى أجزاء تسمى Paragraphs حجم كل منها 16 بايت

لذا يوجد لدينا 1 ميجا بايت / 16 بايت = 2 ^ 16 Paragraph

أو 64 كيلو paragraph

لذا لتحديد أي Paragraph نعمل عليه يتم إستخدام register حجمه 16 بيت يسمى Segment Register

فمن المنطقي أن لتحديد العنوان كاملا باقي أن نحدد أي بايت من ال16 بايت داخل الParagraph نريدها

فيلزم 4 بت إضافية لتحديد أي بايت من داخل الParagraph نقصدها

ويتم وضع هذه الإزاحة في register أخر مثلا

فعلى سبيل المثال للوصول إلى العنوان FFFF3H

يلزم لتمثيله كما قلنا 20 بت

يتم وضع الجزء الأيسر ما يمثل رقم الParahraph

FFFF في Segment Register

و يتم وضع الإزاحة 0003H offset في register اخر مثلا

و هكذا يتم الوصول إلى العنوان

كاملا

من هذا المثال نرى أن البروسيسور ليصل إلى العنوان كاملا يزيح الSegment Register بقيمة 4 مرات لليسار (يضرب في 16) ثم يجمع عليه الoffset

لاحظ أن الOffset لاداعي لتكون على هذا الشكل 000XH

فباقي الخانات يمكن أن تحوي أرقاما ففي جميع الأحوال يقوم البروسيسور بالحصول على العنوان بضرب الSegment في 16 ثم جمع الOffset

لاحظ أن أي عنوان أيضا قد يتم تمثيله بأكثر من طريقة طالما بعد ضرب الSegment في 16 و جمعها على الOffset يكون الناتج واحد

فالإزاحة بكل ببساطة قد تتعدى الParagraph الحالي لتصل إلى Paragraph أخر في نطاق معين

حجم كل Segment قد يبدأ من صفر حتى 64 كيلو بايت

وهذا منطقي فعندما نبدأ بتحديد الParagraph الذي نعمل عليه

يبقى لنا لتحديد العنوان كاملا تحديد الإزاحة التي نريدها و التي قد تمتد من 0000H حتى FFFFH أي حتى 64 كيلو بايت

إقرا الكلمات ببعض من التركيز و تفهم المعاني جيدا

هذا في الReal Mode أما في الProtected Mode فإن الSegment Register يحتوي ما يسمى بالSegment Selector

وهو مايختار Segment معين من Descriptor Table

تم تعديل هذه المشاركة بواسطة Usama Fayez في 4 يناير 2009 في 21:25

#5

انا وجدت شرح هده المسجلات والمقاطع في كتاب فن الأاسمبلي في دروس متقدمة

على العموم شكرا جدا لمساعدتي

وبالنسبة للأخ إلي قلي انا مبتدئين .انا مبتدئ سابقا ههههههه ولازلت الأن مبتدئ في الإحتراف ههههه.

شكرا اخي

#6

USAMA AYES

اشكرك على هذة المعلومات

اخوك

مواضيع مشابهة