السلام عليكــم ورحمـة الله وبركاتــه
انا وصلت في كتاب
َart of assembly
لهده المسجلات ولم أفهم ما هو دورها المرجو شرح ويكون الشرح عربيا من فضلكم
شكرا
السلام عليكــم ورحمـة الله وبركاتــه
انا وصلت في كتاب
َart of assembly
لهده المسجلات ولم أفهم ما هو دورها المرجو شرح ويكون الشرح عربيا من فضلكم
شكرا
راجع هذا:
Do as I say, not as I do
We are Anonymous. We are Legion. We don't forgive. We don't forget
:S أخي هذا الكتاب ليس فيه شرح وافي جدا عن هذه المسجلات
أظن في اعضاء درسوا هذه اللغة في الجامعة و أطلب منكم إفادتي . إن الله لا يحب كاتمي العلم
بما أنك مبتديء أنصحك بقراءة هذا الجزء من كتاب 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
انا وجدت شرح هده المسجلات والمقاطع في كتاب فن الأاسمبلي في دروس متقدمة
على العموم شكرا جدا لمساعدتي
وبالنسبة للأخ إلي قلي انا مبتدئين .انا مبتدئ سابقا ههههههه ولازلت الأن مبتدئ في الإحتراف ههههه.
شكرا اخي
USAMA AYES
اشكرك على هذة المعلومات
اخوك