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

أريد فكرة عن المعامل offset كما في المثال التالي

مغلق
بدأه فارس2004 في 10 فبراير 2004 · 3 رد · 857 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أريد فكرة عن المعامل offset كما في المثال التالي

save DB ?

....

add cx,12

mov save,25

mov bx,offset save

أريد شرح لفائدة المعامل offset

#2

Assalam

You know that the memory is divided in 2 things Segment and offset

Often we program little programs and we use only 1 segment in this case we will need only offsets and the offset means the address of relative to the segment where we are

when we write mov bx,offset something

this means that we will put in bx register the address of something relative to his segment.

I hope this is clear and we can discuss this if you want later in arabic.

Ila likae

#3

أولا شكرا علي التعاون كذلك اسألتي من شخص مبتدأ في اللغة

ثانيا لقد فهمت بان ال segment هو جزء من الذاكرة وأن ال offset هو جزء آخر من ال segment أو بمعني آخر أزاحة من العنوان الفعلي لل segment يعني مثلا

نفرض عمارة سكنية هي الذاكرة ومقسمة الي ادوار ولنفرض مقصمة الي عشرة ادوار وهذه الادوار هي ال segments وكل دور به عدد من الشقق فأذا اردنا الشقة رقم 5 في الدور الرابع , فأننا نقول 45 يعني segment 4 و offset 5 . هل هذا صحيح علي حسب ما فهمت منك؟

ولكن في البرنامج تم تخصيص موقع من الذاكرة حجمه بايت وسميت تلك المنطقة المخصصة له باسم save وتم تخزين رقم في العنوان save وحسب ما فهمت انا save هي جزء من الذاكرة في قطاع المعطيات حيث اصبحت save = 25 . ولكن لم افهمه ماذا يقصد ب offset save ووضع القيمة في ال bx يعني ما فائدة تلك العملية ؟

#4

يعني لو فرضنا مثلا ان محمد يسكن في الدور الرابع وفي الشقة رقم 5 والشقة رقم 5 بها حجر cells والعنصر محمد مخزن في هذه الحجر يعني يسكن بها وكما قلنا فان الا offset تعني شقة وبالتالي لو قلنا offset of Mohamed هو 5 يعني اين يقطن محمد في القطاع الرابع او الدور الرابع

ذلك حسب ما فهمت فهل ما يقد في البرنامج السابق ان الاسمبلير يخزن قيمة ويحدد لها مكان من عنده دون تدخل المبرمج حيث وضع القيمة التي سيميت باسم save في مكان ما من قطاع المعطيات data segment مزاحتا عنها ؟ فها انا ابحث عن قيمة ازاحة save عن بداية مقطعها واخزنها في ال bx ؟

يعني

i tell assmebler please put offset of save that you have put it in somewhere in the data segment in bx

فهل ما فهمته صحيح؟ ارجو انت توضح لي شئ أخطات فهمه

هذا الموضوع مغلق.

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